最新消息:20210917 已从crifan.com换到crifan.org

【已解决】使用已购买的阿里云免费SSL证书即去服务器中配置nginx的https证书

证书 crifan 555浏览 0评论
折腾:
【已解决】购买阿里云首年免费的https证书:Symantec免费型DV SSL证书
后,已经买到了2个首年免费的阿里云合作的Symantec的免费型DV SSL证书:
通过:
云盾管理控制台
https://yundun.console.aliyun.com/?&msctype=email&mscareaid=cn&mscsiteid=cn&mscmsgid=6680118112100422590&#/all
点击:
证书服务(应用安全)
云上签发Symantec、CFCA SSL数字证书,实现HTTPS化
进入:
SSL证书管理控制台
https://yundunnext.console.aliyun.com/?p=casnext#/overview/cn-hangzhou
点击 部署到云产品 右边下拉箭头:
CDN 或SLB 选啥?
不管,直接点击 部署到云产品 吧
结果还是弹出:
CDN 或SLB
参考:
如何申请阿里云的免费 https 证书 – 掘金
使用阿里云免费SSL证书实现全站HTTPS化 – 严颖专栏 – SegmentFault 思否
看来是去下载证书,再去配置服务器的nginx
去下载nginx的:
解压得到:
cert-1542781845390_www.xxx.crt
cert-1542781845390_www.xxx.key
同样去下载nginx的证书:
解压得到:
看看cert证书的信息:
再去看看key的信息:
然后再去服务器中配置nginx的https证书:
如何申请阿里云的免费 https 证书 – 掘金
阿里云 https证书 nginx 配置
Nginx 配置SSL 证书 + 搭建 HTTPS网站的方法 – 阿里云
阿里云https+nginx服务搭建 – 前端 – 掘金
阿里云免费DV证书Nginx配置https – 简书
Linux+Nginx下SSL证书安装 – 阿里云
CentOS 7.4 实例配置 Nginx + HTTPS 服务_服务与应用_操作运维 Linux_常见问题_云服务器 ECS-阿里云
阿里云配置HTTPS(nginx) – 掘金
先去阿里云的ECS服务器的安全组中确认443端口是否允许访问
www.xxx
就可以了:
允许
自定义 TCP
443/443
地址段访问
0.0.0.0/0
System created rule.
110
2018年3月13日 11:48
修改|克隆|删除
dev.xxx
中好像没有443:
去添加:
先去给www.xxx添加https,不过看了些帖子,先要去:
【已解决】nginx中关于ssl配置的逻辑和常见参数含义
然后再去加上配置:
# server
# {
#     listen 80 default_server;
#     server_name www.xxx;
#     index index.php index.html index.htm default.php default.htm default.html;
#     root /www/wwwroot/www.xxx;
    
#     #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#     #error_page 404/404.html;
#     #SSL-END
    
#     #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
#     error_page 404 /404.html;
#     error_page 502 /502.html;
#     #ERROR-PAGE-END
    
#     #PHP-INFO-START  PHP引用配置,可以注释或修改
#     include enable-php-56.conf;
#     #PHP-INFO-END
    
#     #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
#     include /www/server/panel/vhost/rewrite/www.xxx.conf;
#     #REWRITE-END
    
#     #禁止访问的文件或目录
#     location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
#     {
#         return 404;
#     }
    
#     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
#     {
#         expires      30d;
#         access_log off;
#     }
    
#     location ~ .*\.(js|css)?$
#     {
#         expires      12h;
#         access_log off;
#     }
#     access_log  /www/wwwlogs/www.xxx.log;
# }

server {
    listen         80;
    return 301 https://$host$request_uri;
}


server
{
    listen              443 ssl;
    server_name         www.xxx;

    ### Https Related Config
    keepalive_timeout   70; # 设置长连接

    ssl_certificate     /www/server/nginx/conf/cert/www.xxx_aliyun_symantec_free_ov_ssl.crt; # 证书文件
    ssl_certificate_key /www/server/nginx/conf/cert/www.xxx_aliyun_symantec_free_ov_ssl.key; # 私钥文件

    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    # ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

    ssl_session_timeout 10m; # 配置会话超时时间
    ssl_session_cache   shared:SSL:10m; # 配置共享会话缓存大小,视站点访问情况设定

    ssl_prefer_server_ciphers   on; #优先采取服务器算法

    # 如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS(HTTP Strict Transport Security) ,使用 HSTS 策略强制浏览器使用 HTTPS 连接
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;
    add_header X-Frame-Options DENY; #减少点击劫持
    add_header X-Content-Type-Options nosniff; #禁止服务器自动解析资源类型
    add_header X-Xss-Protection 1; #防XSS攻击


    ### Normal Http 80 Related Config
    index       index.php index.html index.htm default.php default.htm default.html;
    root        /www/wwwroot/www.xxx;
    
    access_log  /www/wwwlogs/www.xxx_https.log;

    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #SSL-END

    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    error_page 404 /404.html;
    error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-56.conf;
    #PHP-INFO-END

    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/www.xxx.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        access_log off;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        access_log off;
    }

}
其中https的配置如下:
server
{
    listen              443 ssl;
    server_name         www.xxx;

    ### Https Related Config
    keepalive_timeout   70; # 设置长连接

    ssl_certificate     /www/server/nginx/conf/cert/www.xxx_aliyun_symantec_free_ov_ssl.crt; # 证书文件
    ssl_certificate_key /www/server/nginx/conf/cert/www.xxx_aliyun_symantec_free_ov_ssl.key; # 私钥文件

    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    # ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

    ssl_session_timeout 10m; # 配置会话超时时间
    ssl_session_cache   shared:SSL:10m; # 配置共享会话缓存大小,视站点访问情况设定

    ssl_prefer_server_ciphers   on; #优先采取服务器算法

    # 如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS(HTTP Strict Transport Security) ,使用 HSTS 策略强制浏览器使用 HTTPS 连接
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;
    add_header X-Frame-Options DENY; #减少点击劫持
    add_header X-Content-Type-Options nosniff; #禁止服务器自动解析资源类型
    add_header X-Xss-Protection 1; #防XSS攻击
}
以及http跳转https是:
server {
    listen         80;
    return 301 https://$host$request_uri;
}
然后去看看效果如何:
[root@xxx nginx]# nginx -t
nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /www/server/nginx/conf/nginx.conf test is successful
至少没有出错。
重新加载生效:
[root@xxx nginx]# service nginx reload
Reload service nginx...  done
[root@xxx nginx]# service nginx status
nginx (pid 11981 11980 11979 4976) already running.
[root@xxx nginx]# service nginx stop
Stoping nginx...  done
[root@xxx nginx]# service nginx start
Starting nginx...  done
[root@xxx nginx]# service nginx status
nginx (pid 12032 12031 12030 12029 12028) already running.
然后遇到:
【已解决】nginx中配置了https的ssl证书后不起效果
【总结】
特别提醒:
此时阿里云ECS的安全组,虽然已经加上了443的tcp允许访问:
但是实际上是不其效果的!!!
最后是通过CentOS的firewalld去添加https的443端口:
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
才真正似的443的https网页得以正常打开。
以及加上https的nginx的配置:
server {
    listen              80 default_server;
    return 301          https://$host$request_uri;
}

server
{
    # listen              80;

    listen              443 ssl;
    # listen                [::]:443 ssl;
    # listen                [::]:443 ssl http2;
    # listen              443 ssl http2;
    # listen              443 spdy;
    server_name         xxx www.xxx;
    # server_name         www.xxx;
    # ssl                 on;

    ### Https Related Config
    keepalive_timeout   70; # 设置长连接

    ssl_certificate     /www/server/nginx/conf/cert/www.xxx_aliyun_symantec_free_ov_ssl.crt; # 证书文件
    ssl_certificate_key /www/server/nginx/conf/cert/www.xxx_aliyun_symantec_free_ov_ssl.key; # 私钥文件

    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    # ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    # ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

    ssl_session_timeout 10m; # 配置会话超时时间
    ssl_session_cache   shared:SSL:10m; # 配置共享会话缓存大小,视站点访问情况设定

    ssl_prefer_server_ciphers   on; #优先采取服务器算法

    # 如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS(HTTP Strict Transport Security) ,使用 HSTS 策略强制浏览器使用 HTTPS 连接
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;
    add_header X-Frame-Options DENY; #减少点击劫持
    add_header X-Content-Type-Options nosniff; #禁止服务器自动解析资源类型
    add_header X-Xss-Protection 1; #防XSS攻击

    ### Normal Http 80 Related Config
    index index.php index.html index.htm default.php default.htm default.html;
    root  /www/wwwroot/www.xxx;

    access_log  /www/wwwlogs/www.xxx_https.log;
    error_log   /www/wwwlogs/www.xxx_https_error.log;

    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #SSL-END

    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    error_page 404 /404.html;
    error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-56.conf;
    #PHP-INFO-END

    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/www.xxx.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        access_log off;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        access_log off;
    }

}
实现了:
访问所有的80的http地址,都跳转到对应的443的https
然后https的地址,都可以正常打开了:

转载请注明:在路上 » 【已解决】使用已购买的阿里云免费SSL证书即去服务器中配置nginx的https证书

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
90 queries in 0.200 seconds, using 23.40MB memory