腾讯云服务器
- 腾讯云
- 阿里云
- 百度云
域名绑定服务器
- 在对应云平台使用最高权限管理员添加域名绑定IP
域名绑定SSL证书
本人是在腾讯云平台申请的 SSL证书,下载之后如图所示
CSR证书
需要认识一下 csr 证书(Certificate Signing Request,证书签名请求文件)。是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。
- 有CSR必定有KEY,是成对的,CSR最终变成为证书,和私钥key配对使用。Key是以-----BEGIN RSA PRIVATE KEY-----开头的,-----END RSA PRIVATE KEY-----结尾的。Key必须保存好。
CSR 什么样
CSR是以-----BEGIN CERTIFICATE REQUEST-----开头,-----END CERTIFICATE REQUEST-----为结尾的base64格式的编码。将其保存为文本文件,就是所谓的CSR文件。
CSR 如何生成
- 域名必须正确输入。
- 密钥算法选择RSA的话,密钥长度需要2048bit以上;ECC则是256bit以上。
- 摘要签名虽说目前可以任意,但建议是sha2-256以上。
设置 SSL 证书
tomcat 设置 ssl 证书(tomcat 配置 jks 格式证书)
- 1.导出 jks 证书到 tomcat/conf 文件夹下
- 2.配置 tomcat 的 server.xml
(2.1)修改端口为 80 ,重定向端口为 443 端口是SSL的专用端口。
<!-- 不配置 jks 证书 -->
<Connector port="8021" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- 配置 jks 证书 -->
<Connector port="8021" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
(2.2)AJP/1.3 也要修改为 443
(2.3)设置证书
2.3.1 certificateKeystoreFile 使用的是那个证书
2.3.2 certificateKeystorePassword 申请证书时输入的密码
- 3.重启 tomcat 服务器
nginx 设置 ssl 证书
- 1.将nginx目录下的两个文件存放到 conf/ssl 文件夹中
- 2.修改 nginx.conf 文件
默认端口打开的是 80 端口,
http{
#http节点中可以添加多个server节点
server{
# 监听443端口
listen 443;
# 对应的域名,把 systemchao.cn 改成你们自己的域名就可以了
server_name systemchao.cn;
ssl on;
# 从腾讯云获取到的第一个文件的全路径
ssl_certificate ./conf/ssl/1_systemchao.cn_bundle.crt;
# 从腾讯云获取到的第二个文件的全路径
ssl_certificate_key ./conf/ssl/2_systemchao.cn.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;
}
server{
listen 80;
server_name systemchao.cn;
rewrite ^/(.*)$ https://systemchao.cn:443/$1 permanent;
}
}
- 3.配置这个SSL证书需要引用nginx中的SSL这模块,需要将SSL模块编译。
// 重新添加SSL模块
./configure --with-http_ssl_module
iis 设置 ssl 证书
apache 设置 ssl 证书
以.key结尾的文件(秘钥文件)
以.crt结尾的文件(xxxxx_bundle.crt是证书链文件,xxxxx.crt是证书文件)
- 1.开启 SSL服务,打开Apache/conf/httpd.conf,在httpd.conf文件中找到以下参数并进行配置,保存后退出。
# 1. 删除行首的配置语句注释符号“#”
# 2. 加载 mod_ssl.so 模块启用SSL服务,Apache默认是不启用该模块的。如果找不到该配置,请重新编译mod_ssl模块。
#LoadModule ssl_module modules/mod_ssl.so
# 3.删除行首的配置语句注释符号“#”。
#Include conf/extra/httpd-ssl.conf
- 2.打开Apache/conf/extra/httpd-ssl.conf,在httpd-ssl.conf文件中找到以下参数并进行配置。 证书路径建议使用绝对路径。
Listen 443
SSLPassPhraseDialog builtin<VirtualHost _default_:443>
DocumentRoot "C:\Program Files\api"
ServerName api.test.com
ServerAlias api.test.com
ErrorLog "C:\Program Files\api\logs\websslapi-error.log"
TransferLog "C:\Program Files\api\logs\websslapi-access.log"
<Directory "C:\Program Files\api">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "C:\phpstudy\Apache\conf\ssl\api.test.com.crt"
SSLCertificateKeyFile "C:\phpstudy\Apache\conf\ssl\api.test.com.key"
SSLCertificateChainFile "C:\phpstudy\Apache\conf\ssl\api.test.com_ca_bundle.crt"
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "C:\Program Files\api\logs\ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>