SSL证书安装 ----------------各版本tomcat安装安全证书
首先,不知道你有没有发现,有时你在浏览器访问一个网址时,例如(www.hzelin.top),你会发现网址左边是个 X不安全(表示该链接不安全,使用的是http未加密协议),而有时你访问一个网址的时候发现地址左边是(表示该链接是安全的,使用https加密协议,特别是做小程序的,一定需要https访问的),那这个是怎么实现的呢?下面告诉你一种方法:
声明:此处说的都是使用pfx方式对tomcat版本安装SSL证书,别的方式自己百度,个人觉得这种方式更简单点:
一、首先你的去申请SSL证书,阿里云上有免费一年的,可以自己去申请,怎么申请这里就不讲了,百度很多;只要最后的结果你有如下图两个文件就行了;
第一个文件,一般是xxx_你的域名.pfx,这个就是安全证书,别以为证书是那种要你去复印提交的那种!!!!
第二个文件,是使用该证书的密码,是一个纯文本文件,里边就一串字符串,两者配套使用,别乱搭!!!!
申请的证书与你使用哪种服务器有关,但是与你使用同一种服务器的各个版本无关,例如(tomcat7或tomcat8,这是没影响的,也就是说通用)
二、配置tomcat服务器,注意:安装SSL证书只影响web服务器,并不影响你的项目,所以不需要修改自己的项目
1、将下载的两个文件上传到自己tomcat服务器下(sftp可以实现),新建一个cert文件夹(mkdir cert),最好修改一下权限(chmod 777 cert),如下图:
2、下面开始配置tomcat(首先在没配置之前,请保证tomcat是能正常访问的,无论你是否修改的8080端口,这是前提)
下面tomcat7.0及以下版本 和tomcat8以上版本配置存在点下差异,下面有区别,前面都是一样的:
首先进入远程服务器,定位到tomcat安装目录下conf文件内的server.xml,通过vim命令打开该文件:
找到如下标签进行修改:将port修改为80,目的是后面访问项目就不用加端口号8080了,修改redirectPort为443,目的是后面通过http访问的时候能重定向到通过https访问
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
================================================================================================================
从这里开始,tomcat7.0及以下版本按下面配置方式进行:
然后继续往下找,找到如下图类似的标签内容(下图是已经修改过的),你能找到的应该是被<!--xxx-->这个注释掉的,只要释放出来自己修改就行了:
其中port属性修改为上面redirectPort相同,都是443;protocol不做修改;maxThreads不做修改;SSLEnabled默认,没有自己添加上;scheme默认;secure默认;
重点来了:keystoreFile属性自己添加上,值为之前上传到服务器cert目录下的pfx文件,建议使用绝对路径,可以参考上图做修改;
keystoreType="PKCS12",自己添加上;
keystorePass属性自己添加上,值为之前上传到服务器cert目录下的txt文件内的那串字符串;
后面的clientAuth="false"与sslProtocol="TLS"自己添加上,是否有这个必要,我也不清楚;
=================================tomcat8.0及以上版本按下面配置================================================
从这里开始,tomcat8.0及以上版本按下面配置方式进行:
找到如下图模块,释放注释,做必要修改,修改内容如下面代码
1)、将Tomcat中默认的HTTPS端口Connector port 8443修改为443。8443端口不可通过域名直接访问、需要在域名后加上端口号;443端口是HTTPS的默认端口,可通过域名直接访问,无需在域名后加端口号。
2)、server.xml文件中Connector port有两种运行模式(NIO和APR),请选择NIO模式(也就是protocol="org.apache.coyote.http11.Http11NioProtocol")这一段进行配置。
3)、certificateKeystoreFile代表证书文件的路径,请用您证书的路径+文件名替换证书域名.pfx,例如:certificateKeystoreFile="/usr/local/tomcat/cert/abc.com.pfx"
4)、certificateKeystorePassword为SSL证书的密码,请用您证书密码文件pfx-password.txt中的密码替换,例如:certificateKeystorePassword="bMNML1Df"
5)、证书类型为PFX格式时,certificateKeystoreType修改为PKCS12。
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="/usr/local/tomcat/cert/证书域名.pfx" certificateKeystorePassword="证书密码" certificateKeystoreType="PKCS12" />
</SSLHostConfig>
</Connector>
==============================tomcat8.0以上到此结束,后面是共同的=================================================
然后继续往下找,找到如下图,将redirectPort修改成与上面相同的443就行了:
到此处就算修改完成了,按esc键退出编辑模式,然后使用:wq保存并退出即可;
(接下来这一步,可做可不做,做了的好处是使用http访问会被强制转换为https访问)
通过vim命令打开conf目录下的web.xml文件,通过shift+g定位到该文件最后,找到</welcome-file-list>该结束标签,并在后面追加如下代码
<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>
到这一步整个配置过程已经算是完成了,现在重启tomcat服务器(./shutdowm.sh ./startup.sh),启动成功后,使用浏览器访问一下,看是否成功;
1、我遇到的坑:tomcat启动成功,但就是死活访问不到,原因是防火墙443端口没有开放,使用firewall-cmd --zone=public --add-port=443/tcp --permanent命令开放443端口,然后重新访问试一下,这下是否可以访问了。。。。。。。
2、可能的坑:tomcat正常启动,防火墙端口也开放了,但还是访问不到,那你最好看一个上阿里云平台看一个你的安全组是否设置为允许开放该端口了!!!!有时候你刚装tomcat服务器,发现正常启动,8080端口也开了,但还是访问不到,最可能的原因就是安全组没开了,这一点切记切记。。。。。。。
3、一切都没问题,但还是访问不了,别急,等15分钟后重新访问试一下,可能tomcat表面上给你显示启动成功了,实际上是还在启动中。。。。。。。。。