备案顶级域名和二级域名分别启用SSL

如何在备案完成后,同时让顶级域名和二级域名都具有ssl的访问

在申请备案的云上面申请免费证书

以腾讯云为例

  1. 申请入口
  2. 填写申请
  3. 选择自动 DNS 验证方式
  4. 提交申请后验证身份
  5. 等待验证

使用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;
}
}