给你的网站添加https
最近有个需求给开放的网站添加https, 就顺手记录一下,要养成习惯。
免费自动添加https
如果你想要比较正式的效果,不需要用户再点击一下,你可以考虑以下两种免费的证书方案。
1. Let's Encrypt 仅支持域名
Let's Encrypt 比较简单,安装官网操作,安装配合nginx即可,比较简单。
2. zerossl 支持IP
第一个只支持域名证书,如果你没有域名,又不想配置hosts,那么你可以考虑使用zerossl。
不过看了下需要注册账号,填写信息,相对来说比较麻烦和泄漏了信息,所以个人不喜欢,如果是一些非正式有点私密的还是选择自签名证书吧。
自签名证书
在配置 Nginx 服务器时,你可以选择将证书文件放在适合的位置。以下是一些常见的选择:
- 默认位置 (/etc/nginx/): 在大多数 Linux 系统上,Nginx 的默认配置文件和相关文件通常位于
/etc/nginx/
目录下。你可以在该目录下创建一个名为certs
或ssl
的子目录,并将证书文件放在其中。例如,可以将证书文件命名为server.crt
,私钥文件命名为server.key
,然后将它们放在/etc/nginx/certs/
目录下。 - 自定义位置: 如果你希望将证书文件放在其他位置,可以根据你的喜好和服务器配置进行调整。只需确保 Nginx 配置文件中的
ssl_certificate
和ssl_certificate_key
指令正确指向你的证书文件的路径。
无论你选择哪个位置,确保证书文件的权限设置正确,以确保只有合适的用户和进程能够读取它们。通常,证书文件应该具有 600 或更高的权限,并且仅对 Nginx 用户可读。
另外,如果你有多个虚拟主机或网站,每个网站都有自己的证书,你可以为每个网站创建单独的子目录,并在每个子目录中存放相应的证书文件。
无论你选择哪个位置,确保在 Nginx 的配置文件中正确指定证书文件的路径,以使 Nginx 能够找到并加载证书。
要为 Nginx 添加自签名的 HTTPS 证书,请按照以下步骤进行操作:
进入到你想要保存的目录,比如:
cd /etc/nginx/ssl
生成私钥文件:首先,使用 OpenSSL 工具生成一个私钥文件(.key)。在终端中运行以下命令:
没有权限的话就加sudo
shellopenssl genpkey -algorithm RSA -out server.key
生成证书签名请求(CSR):使用私钥文件生成证书签名请求文件(.csr)。运行以下命令:
在生成 CSR 期间,你需要提供一些信息,如国家/地区代码、组织名称、通用名称(域名或 IP 地址)等。
这个环境需要注意,如果是IP的话需要写网络出口的IP,如果是域名就填写域名即可。
shellopenssl req -new -key server.key -out server.csr
生成自签名证书:使用私钥和 CSR 文件生成自签名证书文件(.crt)。运行以下命令:
这将生成一个有效期为 365 天的自签名证书文件 server.crt。
shellopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
配置 Nginx 服务器:找到 Nginx 的配置文件(通常是 nginx.conf),在适当的位置添加以下代码来配置
注意端口后需要加上ssl
listen 443 ssl;
将 "your_domain_or_ip_address" 替换为你的域名或 IP 地址
并将 "/path/to/server.crt" 和 "/path/to/server.key" 替换为你生成的证书和私钥文件的实际路径
nginxserver { listen 443 ssl; server_name your_domain_or_ip_address; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; # 其他 SSL 配置选项 }
添加安全漏洞修复CVE-2014-3566 CVE-2015-4000
nginx# Fix CVE-2014-3566 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # fix CVE-2015-4000 ssl_dhparam /your_path/dhparams.pem; ssl_ecdh_curve secp384r1;
你需要先生成文件 生成强大的 Diffie-Hellman 参数
shellsudo openssl dhparam -out /your_path/dhparams.pem 2048
重启 Nginx:保存配置文件并重新启动 Nginx 服务器,以使更改生效。
现在,你的 Nginx 服务器应该已成功配置为使用自签名的 HTTPS 证书。请注意,由于这是自签名证书,浏览器可能会显示安全警告。你需要手动信任证书才能正常访问网站。
请注意,自签名证书不具有受信任的第三方验证,因此仅适用于测试、开发或个人使用。对于公共网站或商业用途,建议使用由受信任的证书颁发机构签发的有效证书。