本文共 2042 字,大约阅读时间需要 6 分钟。
近期公司开发微信小程序,需要用到https进行访问,在这期间遇到很多的坑,下面说说我配置https的填坑之路。
网上免费的证书很多,在此我们用的是阿里云(之前在自己公司测试服务器上用的是jdk生成自签发证书,但这个不能通过安全验证),申请阿里云免费的证书绑定指定你购买的域名;Tomcat8.5和Tomcat9配置一样。
(1)申请证书
在申请证书的时候有一步验证的操作,上传验证文件fileauth.txt到相应的目录:该目录从站点的根目录(Tomcat下webapps/ROOT)算起,在站点的根目录下创建.well-known/pki-validation子目录,并把fileauth.txt文件上传到目录下。开始利用ftp直接创建.well-known是不能创建该目录的,需要使用命令mkdir .well-known来创建,rm -rf .well-known删除文件夹及文件夹下的目录文件。开始我误把webapps当做更目录了,结果验证失败,后来在ROOT下创建的。
(2)申请证书成功之后,下载对应的证书文件在服务器上进行配置
(3)在Tomcat下创建cert文件夹,然后把上面两个文件上传进去。
(4)更改Tomcat配置,默认是Tomcat/conf/server.xml。根据阿里给的文档,测试了很久,也没有成功,这里就是一个大坑。最后发现发现tomcat8.5和其他版本不同(我用的是Tomcat8.5,这里应该是Tomcat8之后,配置就会不同,官方给的文档只是适用于Tomcat8之前),阿里文档连接
下面开始进行配置,打开Tomcat/conf/server.xml,在server.xml文件中找到以下参数并进行修改。
首先设置端口为80,以便访问的时候不用输入端口号,将redirectPort修改为SSL默认端口443,让HTTPS请求转发到443端口。
然后找到<Connector port="8443" 这里是一段注释的代码,是Tomcat给出的两种配置样例,可以选择一个修改,也可以添加下面的代码,https默认端口443。
#证书类型为PFX格式时,certificateKeystoreType修改为PKCS12。
再将下面代码进行修改,redirectPort修改为443,与上面https端口对应,让HTTPS请求转发到443端口。
(可选)添加<Context docBase="项目名称" path="" reloadable="true"/>,目的是为了不需要输入项目名称进行访问,这样配合80端口,就能通过域名直接访问项目
最后修改Tomcat/conf/web.xml文件,在web.xml文件最底部添加以下内容,实现HTTP自动跳转为HTTPS
SSL /* CONFIDENTIAL
(5)保存server.xml和web.xml文件配置。重启Tomcat服务。在Tomcat下的bin目录中执行./shutdown.sh关闭Tomcat服务。再执行./startup.sh开启Tomcat服务。
(6)最后在浏览器中输入您SSL证书绑定的域名https://www.YourDomainName.com验证证书安装结果。浏览器地址栏显示绿色的小锁标识说明证书安装成功。
在验证的时候掉进一个坑了,配置好过后,输入ip地址能访问,也解析到https,但就是显示不安全,输入域名访问不了,自认为自己配置有问题(这里就是自己掉进了死胡同)。前前后后多次查看修改步骤也都没发现错误,多次也测试无果。没办法先休息一下脑壳,可能宕机了。也是回到家后无意之间想起通过ip地址访问本身就是不安全的,那为什么域名访问不了,赶紧打开电脑发现是防火墙的443端口没有开放。所以遇到一直解决不了的问题,不要一直纠结,适当让自己放松一下,这样不至于掉进死胡同。
Centos7.5的防火墙放开443端口操作(逐条命令运行即可,分别为放开443的tcp传输、放开443的udp传输、重启防火墙):
①firewall-cmd --permanent --add-port=443/tcp
②firewall-cmd --permanent --add-port=443/udp ③systemctl restart firewalld转载地址:http://hyajn.baihongyu.com/