阿里云免费SSL申请及Nginx配置

阿里云免费的证书为digicertRSA证书,有效期为一年,到期后可重新申请,每年有20个可以申请

在这里插入图片描述
如图可以看到创建证书的按钮即可创建属于自己的SSL RSA证书

接下来如图配置提交审核即可
在这里插入图片描述
提交审核后,即可在分页栏看到你自己创建的那一项,审核需要点时间,但不用太久就能收到短信的通知
在这里插入图片描述
当证书的状态变为已签发的时候,即可下载使用

点击操作栏的下载可以看到
在这里插入图片描述
这里我们选择 Nginx 的进行下载

下载后能看到这样的一个zip压缩包
在这里插入图片描述
将其上传至你的 nginx 服务器

上传有很多工具,大伙也可以直接sftp 的 put 命令进行上传

上传后,我将该压缩包放在了 /etc/nginx/ssl 中,ssl 这个文件夹是我自己创建的,另外例如我的这个证书的域名是link.ahogek.com,我就会再建一个名为link的文件夹专门放这个压缩包解压出来的一个pem文件和一个key文件。解压可以使用unzip也可以使用unar 的命令

然后就可以开始配置nginx了,我一般在conf.d目录下新建配置文件。例如 /etc/nginx/conf.d/link.conf

server {
    listen      80;
    server_name link.ahogek.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name link.ahogek.com;

    ssl_certificate ssl/link/link.ahogek.com.pem;
    ssl_certificate_key ssl/link/link.ahogek.com.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';

    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

在配置文件中,第一个 server 配置用于当用户使用 http 进行访问的时候自动跳转至 https
关于$host $request_uri 相当于请求的host与uri 更多详细可以查看官方文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#variables

而第二个 server 就是用来配置我们的 https
listen 443 ssl; server_name link.ahogek.com; 这两个很好理解,就是监听 link.ahogek.comhttps的443端口并使用 SSL/TLS 协议。

ssl_certificate ssl/link/link.ahogek.com.pem;
ssl_certificate_key ssl/link/link.ahogek.com.key;

这个配置便是配置证书,也就是刚才我们解压的那两个文件,这里使用了相对路径,也就是/etc/nginx下的路径,大家也可以使用绝对路径。

ssl_protocols TLSv1.2 TLSv1.3;
ssl_protocols 指令用于在 Nginx 配置中指定支持的 SSL/TLS 协议版本,这里配置的 TLSv1.2 和 TLSv1.3 是因为它们被认为相对较新且安全。nignx默认为 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; 详细可参考官方文档:http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols

ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_ciphers用于配置加密套件,用于加密数据,不同的客户端对加密套件的支持可能并不一样,需要权衡安全性、兼容性和性能。官方文档:http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers另外就如文档里说的,大家可以使用 openssl ciphers 查看系统支持的所有的加密套件
最后这里给大家推荐一个网站用于生成 SSL 的配置,是Mozilla做的
https://ssl-config.mozilla.org/

就如上面配置完成之后,大家就可以访问 https 的网站了。需要注意服务器是否开启了443端口,我这边的服务器不是centos,而是ubuntu,我有开启ufw,所以如果你也有开启的话记得使用 ufw allow 443 开放其端口,更多关于ufw的指令可查阅:https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands