通过提交CSR一些可靠的第三方SSL签发机构,得到颁发的CRT文件,我们可以将自己的站点实现上HTTPS访问。
一些可靠的第三方SSL签发机构在文末列出。
1. 使用OpenSSL生成Key和CSR
openssl req -nodes -newkey rsa:2048 -keyout example.key -out example.csr
该命令生成一个2048位的Key文件和CSR文件。如果您的服务器性能足够,也可以使用4096位。不选择1024位是因为(简单来说)现在的计算机性能越来越好,其算法被破解的难度大大降低了。
生成私钥时会向您询问一些信息,其中:
Common Name (e.g. server FQDN or YOUR name) []: YOUR INPUT
一项在此处填写的是域名,因为我们在给网站应用上HTTPS。
2. 获取CRT文件
通过您信赖的第三方CA机构(文末列出了一些第三方机构),提供CSR文件,其一般会给您颁发一个CRT文件。现在,您一共有了三个文件:example.key
,
example.csr
, example.crt
3. 在服务区上配置
首先将key和crt上传至服务器任意一个目录下,这里假设您上传至了/etc/ssl/private/
.
然后修改Nginx配置:
server {
listen 80; listen [::]:80; listen 443 ssl default_server; listen [::]:443 ssl default_server; .... #ssl on;
ssl_certificate /etc/ssl/private/example.crt; ssl_certificate_key /etc/ssl/private/example.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL;}
保存并退出, 重启Nginx,访问https://example.com即可查看到效果啦!
可以使用nginx -t && nginx -s reload
来检测语法并且重启,或者直接使用killall -HUP nginx
来平滑启动nginx。
如果取消注释ssl on
,那么在没有其他措施的情况下,正常访问http://example.com,会显示错误:
The plain HTTP request was sent to HTTPS port
4. 可靠第三方SSL签发机构
此处信息摘自于此处
目前一般市面上针对中小站长和企业的 SSL 证书颁发机构有:
cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > example_com.signed.crt
在 Nginx 配置里使用 example_com.signed.crt 即可