折腾:
【已解决】购买阿里云首年免费的https证书:Symantec免费型DV SSL证书
后,已经买到了2个首年免费的阿里云合作的Symantec的免费型DV SSL证书:
通过:
云盾管理控制台
点击:
证书服务(应用安全)
云上签发Symantec、CFCA SSL数字证书,实现HTTPS化
进入:
SSL证书管理控制台
点击 部署到云产品 右边下拉箭头:
CDN 或SLB 选啥?
不管,直接点击 部署到云产品 吧
结果还是弹出:
CDN 或SLB
参考:
看来是去下载证书,再去配置服务器的nginx
去下载nginx的:
解压得到:
cert-1542781845390_www.xxx.crt
cert-1542781845390_www.xxx.key
同样去下载nginx的证书:
- cert-1542782485582_dev.xxx_nginx.zip
解压得到:
- cert-1542782485582_dev.xxx.crt
- cert-1542782485582_dev.xxx.key
看看cert证书的信息:
再去看看key的信息:
然后再去服务器中配置nginx的https证书:
阿里云 https证书 nginx 配置
先去阿里云的ECS服务器的安全组中确认443端口是否允许访问
就可以了:
允许 自定义 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的地址,都可以正常打开了: