-
生成可用的keystore
- 在windows下,打开cmd命令行,运行keytool -genkey -alias tomcat -keyalg RSA -keystore d:\tomcatSSL.keystore命令,其中-alias后面的参数是你keystore的别名,-keystore后面是你keystore的生成位置,这两个可以自行配置。生成后讲keystore文件导入centos下的tomcat安装的目录下的conf,可以存放到任意位置,第二步中的参数有相关配置,如果进行了自定义请记得修改。
-
修改相关配置文件
-
%tomcat%/conf/server.xml
-
这个文件需要修改的是
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
改成如下:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
这条中的port由8080改为了80,80是ip输入后默认的端口,能够使讲直接输入的ip引导至tomcat服务中。
然后是这一条,这一条原本是被注释掉的,注意释放出来再进行更改:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false"
sslProtocol="TLS" />
改成如下:
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="conf/tomcatSSL.keystore" keystorePass="123456" />
keystoreFile="conf/tomcatSSL.keystore" keystorePass="123456"
这两个参数根据你自定义的keystore名字和存放位置及密码的不同自行进行修改
最后:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
改为:
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
然后保存。
-
%tomcat%/conf/web.xml
在文件尾部<welcome-file-list>标签结束后加入如下代码:<login-config> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <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强制使用https进行登录,如果不需要可以不用改
最后把你的war包名字改为ROOT,并删除%tomcat%/webapps下的ROOT文件夹,启动tomcat,整体功能就完成了。访问项目时会出现不被信任的证书,那是因为你放在conf下的证书是你自己生成的,没有被认证,如果要认证需要到有资质的中心进行认证。如果出现了invaild keystore format ,是因为你keystore的格式无法解析,在生成完keystore的时候,cmd会提示让你使用另一个命令切换RSA格式到贫pkcs12,不要切换,切换后就会出现前面的异常。