Nginx二级域名添加ssl证书遇到的坑小计

一、申请免费ssl证书

免费ssl证书不支持通配符ssl证书,哪怕之前申请过一级域名的证书,二级域名也需要重新申请对应证书。

花钱就能变强,阿里有提供通配符ssl,就是只要一本证书可以给其下其他二级域名使用,就是价格嘛…一年1700/1256,不同颁发证书的平台价格稍有差别。

这里有个小坑:

  • 单独为二级域名申请ssl证书的时候,选择自动DNS验证
  • 证书想要绑定的域名需单独去DNS解析
  • 需要添加一条TXT的解析记录,主机记录与记录值都照搬。

二、下载及配置对应ssl证书

证书发下来后选择对应的nginx版本证书下载,并上传至服务器,并将pem文件改成crt。

server {
    listen       80;
    listen       443 ssl;
    server_name  xxx.cn;
    #charset koi8-r;

    # 下面这段ssl的代码才是ssl的配置.
    # ssl on的话访问所有二级域名都会自动转至443端口,可能会导致报错.
    # 所有可以ssl off,然后在对应listen 443后面添加ssl;
    ssl off;
    ssl_certificate      /path/xxx.crt;
    ssl_certificate_key  /path/xxx.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 10m;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_buffer_size 1400;
    add_header Strict-Transport-Security max-age=15768000;
    ssl_stapling on;
    ssl_stapling_verify on;
    
    # 其他原配置项省略
}

然后重启Nginx,就ojbk了。

????有这么简单????我搞了两天???艹了!那就当做mark一下好了

三、http请求自动转发至https

补充说明他leile~在事后的使用中发现访问http的端口依旧是去找80端口,那么ssl就是无效的。现在要将请求转发至https:

server {
    listen 80;
    server_name  www.xxx.cn;
    #告诉浏览器有效期内只准用 https 访问
    add_header Strict-Transport-Security max-age=15768000;
    #永久重定向到 https 站点
    return 301 https://$server_name$request_uri;
}

喜欢()
评论 (0)