实用教程域名SSL备案顶级域名和二级域名分别启用SSL
ChengZC如何在备案完成后,同时让顶级域名和二级域名都具有ssl的访问
在申请备案的云上面申请免费证书
以腾讯云为例
- 申请入口
- 填写申请
- 选择自动 DNS 验证方式
- 提交申请后验证身份
- 等待验证
使用Nginx,Apache,iis,tomcat部署证书
我是用的Nginx:
获取证书
Nginx 文件夹内获得 SSL 证书文件 1_www.domain.com_bundle.crt 和私钥文件 2_www.domain.com.key。
1_www.domain.com_bundle.crt 文件包括两段证书代码 “—–BEGIN CERTIFICATE—–” 和 “—–END CERTIFICATE—–”,
2_www.domain.com.key 文件包括一段私钥代码 “—–BEGIN RSA PRIVATE KEY—–” 和 “—–END RSA PRIVATE KEY—–”。
证书安装
将域名 www.domain.com 的证书文件 1_www.domain.com_bundle.crt 、私钥文件 2_www.domain.com.key 保存到同一个目录,例如 /usr/local/nginx/conf 目录下。
修改 Nginx 根目录下 conf/nginx.conf 文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| server { listen 443; server_name www.domain.com; #填写绑定证书的域名 ssl on; ssl_certificate 1_www.domain.com_bundle.crt; ssl_certificate_key 2_www.domain.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { root html; #站点目录 index index.html index.htm; }}
|
配置完成后,请先执行命令 bin/nginx –t
测试 Nginx 配置是否有误。若无报错,重启 Nginx 之后,即可使用 https://www.domain.com
来访问。
相关参数说明如下:
配置文件参数 |
说明 |
listen 443 |
SSL 访问端口号为 443 |
ssl on |
启用 SSL 功能 |
ssl_certificate |
证书文件 |
ssl_certificate_key |
私钥文件 |
ssl_protocols |
使用的协议 |
ssl_ciphers |
配置加密套件,写法遵循 openssl 标准 |
使用全站加密,HTTP 自动跳转 HTTPS(可选)
对于用户不知道网站可以进行 HTTPS 访问的情况下,让服务器自动把 HTTP 的请求重定向到 HTTPS。
在服务器这边的话配置的话,可以在页面里加 js 脚本,也可以在后端程序里写重定向,当然也可以在 web 服务器来实现跳转。Nginx 是支持 rewrite 的(只要在编译的时候没有去掉 pcre)
在 HTTP 的 server 里增加 rewrite ^(.*) https:// permanent;
这样就可以实现 80 进来的请求,重定向为 HTTPS 了 。
二级域名开启SSL
由于获取的证书不是泛域名证书,想要实现二级域名也七月ssl,需要在次申请二级域名的证书,并同时配置Nginx,配置后如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| server { listen 443; server_name chengzc.club; #填写绑定证书的域名 ssl on; ssl_certificate /ssl/1_chengzc.club_bundle.crt; ssl_certificate_key /ssl/2_chengzc.club.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { root /opt/abc; #站点目录 index index.html index.htm; } } server { listen 443; server_name abc.chengzc.club; #填写绑定证书的域名 root /usr/abc/; #站点目录 index index.html index.htm index.php; ssl on; ssl_certificate /ssl/1_abc.chengzc.club_bundle.crt; ssl_certificate_key /vhost/ssl/2_abc.chengzc.club.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } } location ~ \.php(.*)$ { fastcgi_pass unix:/tmp/php-cgi-71.sock; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
|