HTTPS-应用SSL到站点

通过提交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 即可