SSL证书申请
这里以阿里云为例
进入阿里云控制台 申请SSL证书(免费/收费) 下载
Tomcat版证书
- 以Tomcat为例 得到两个文件,一个是pfx格式的证书,一个是密码文本
- 使用java jdk将PFX格式证书转换为JKS格式证书 --最终得到 domains.jks (CMD)
Microsoft Windows [版本 10.0.19041.508]
(c) 2020 Microsoft Corporation. 保留所有权利。
C:\Users\user06>cd C:\ssl
C:\ssl>keytool -importkeystore -srckeystore 你的证书文件名称.pfx -destkeystore domains.jks -srcstoretype PKCS12 -deststoretype JKS
正在将密钥库 你的证书文件名称.pfx 导入到 domains.jks...
输入目标密钥库口令:
再次输入新口令:
输入源密钥库口令:
已成功导入别名 alias 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore domains.jks -destkeystore domains.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
C:\ssl>
Nginx版证书
- 下载得到两个文件,一个是pem格式的证书,一个是key格式的密码
服务器https配置
Tomcat配置
- 服务器切换到conf目录将domains.jks复制到此目录,编辑server.xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="conf/domains.jks" #证书目录
keystorePass="4sMRN6K3" #证书密码
clientAuth="false" sslProtocol="TLS" />
- HTTP强制跳转HTTPS(可选) 修改项目的web.xml
在该文件标签(一般在文件最末尾)后面加上这样一段:
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Nginx配置
将pem和key文件复制目服务器 打开nginx目录下的nginx.conf文件
http{
#http节点中可以添加多个server节点
server{
#监听443端口
listen 443;
#对应的域名,把xxxx.com改成你们自己的域名就可以了
server_name xxxxx.com;
ssl on;
#第一个pem文件的全路径
ssl_certificate /pem路径/文件.pem;
#第二个key文件的全路径
ssl_certificate_key /key路径/文件.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;
#这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。
location / {
#文件夹
root /usr/local/service/ROOT;
#主页文件
index index.html;
}
}
server{
listen 80;
server_name xxxx.com;
rewrite ^/(.*)$ https://xxxx.com:443/$1 permanent;
}
}
如果使用宝塔面板的Nginx 可以直接复制粘贴(其他辅助工具同理)