配过ssl证书的都知道证书默认使用的端口是443,所以一台服务器配两个证书需要注意端口问题,重点如果修改端口后不行就尝试重启一下服务器,自己在这被坑了好长时间。
正题:
系统环境:Centos7
Apache版本:Apache2.4.6(yum安装)
Tomcat版本:8.5.30**(注意: 8.5以下版本配置方法不一样,不适用此方法)**
1.申请免费的HTTPS SSL域名证书
本人是在腾讯云申请:
在腾讯云产品找到SSL证书管理,选择申请证书:
确定后填写域名信息:
有域名管理权限选择DNS验证,只有空间权限选择文件验证,这里以DNS验证为例:
等待几分钟审核通过后下载文件:
下载完成后解压找到Apache目录下的三个文件:
1_root_bundle.crt
2_zaax.top.crt
3_zaax.top.key
在Centos7的Apache安装目录下新建ssl目录:
cd /etc/httpd/ssl
在将这三个文件上传至ssl目录。
2.Apache服务器安装SSL域名证书
安装ssl模块
yum install mod_ssl
修改ssl.conf文件
vim /etc/httpd/conf.d/ssl.conf
修改域名指定的目录:
如果httpd.conf文件中没有指定域名目录,默认则是/var/www/html目录,因为我指定了域名目录,所以DocumentRoot值需要修改。:
修改ssl证书路径:
修改完成后,重启apache,就可以用Https访问了。
systemctl restart httpd.service
还有最后一个问题,就是如果是用http://访问并不会自动跳转到https访问。
3.Apache HTTP访问强制跳转HTTPS访问
在httpd.conf文件中加入:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
加入位置 :
<Directory>
...
<directory>
设置完成后重启apachet
http访问就会自动跳转到https。
4.Tomcat服务器配置SSL证书
在下载的ssl文件中找到Tomcat目录,将zaax.top.jks文件上传到服务器的Tomcat目录下的/conf/位置。
修改tomcat service.xml文件,找到这一段,去掉注释,修改证书路径和加入申请证书填写的密码,修改成功后保存重启tomcat。
注意:端口根据自身需求修改!
这里端口可能有疑问,举例,我的tomcat默认端口是8080,没有修改过:
如果是http访问:那么url不变:http://www.zaax.top:8080
如果是https访问:请求的url变为:https://www.zaax.top:8443
但是如果修改了https端口,需要修改三个地方,并保持一致:
8080是http端口
8443是https端口
8009是tomcat集群端口
5.Tomcat Http请求强制跳转HTTPS请求
编辑 web.xml文件:
vim /usr/tomcat/apache-tomcat-8.5.24/conf/web.exml
在倒数第二行加入:
<security-constraint>
<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>
重启tomcat。
访问:http://www.zaax.top:8080会自动跳转至https://www.zaax.top:8443,这样就兼容了老的接口,新开发的接口就可以用8443端口。大功告成!