如何在备案完成后,同时让顶级域名和二级域名都具有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 | server { |
配置完成后,请先执行命令 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
44server
{
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;
}
}