前言apache
前一段时间有了解如何配置Tomcat服务为Https单向认证和双向认证,当时也作了一些记录,今天开始写博客,就把之前的记录拿出来整理下,分享给你们。本文没有介绍证书如何生成,会在下一篇博文里介绍。vim
在Tomcat的根目录下找到/conf/server.xml文件打开,找到以下位置浏览器
修改成以下内容:tomcat
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="C:\Install\keystore" keystorePass="server" clientAuth="false" sslProtocol="SSL" ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_RC4_128_MD5" sslEnabledProtocols="TLSv1.2" />
这段配置中keystoreFile="C:\Install\keystore" keystorePass="server"
须要根据本身的证书进行调整,其中keystoreFile 可使用相对路径网站
如今这个网站是能够访问的,可是会提示证书风险,下面两张图片是分别使用360和IE访问时提示证书风险的状况,能够点击查看证书,将证书安装到“受信任的根证书颁发机构”目录下,以后重启浏览器访问,这个证书异常就会消失3d
如今单项认证就配置完成了,也就是客户端对服务端已经认证成功了,但服务端并无对客户端进行认证。code
修改/conf/server.xml文件,上次修改的地方修改以下server
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="C:\Install\keystore" keystorePass="server" truststoreFile="C:\Install\client.truststore" truststorePass="server" clientAuth="true" sslProtocol="SSL" ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_RC4_128_MD5" sslEnabledProtocols="TLSv1.2" />
添加属性有truststoreFile="C:\Install\client.truststore" truststorePass="server"
client.truststore里面放的是信任客户端的证书
修改属性有 clientAuth="true"
修改完成重启tomcatxml
如今访问网站发现没法访问了,还不明白怎么回事,但你用Chrome访问时,还有一个提示: XX网站不接受您的登陆证书,或者您可能没有提供登陆证书。
先打开以下画面IE:internet选项→内容→证书
其余浏览器:选项→管理证书blog
点击导入,把本身制做的P12证书放入到“我的”目录下。注意:导入时要输入证书密码
这个时候在刷新页面就会看到以下画面,(由浏览器而定)
点击肯定之后,就能够访问成功了.(部分浏览器导入密钥后可能须要重启浏览器)
https双向认证也配置完成了。
tip:由于本篇博文主要讲配置,没有讲在服务端的信任证书库添加我的证书的的公钥,因此下面附上我生成证书的bat文件。
set SERVER_DN="CN=192.168.XXX.XXX, OU=cybersoft.com, O=cybersoft, L=CN, S=CN, C=CN" set CLIENT_DN="CN=cybersoft.com.tw, OU=cybersoft.com, O=cybersoft, L=CN, S=CN, C=CN" set PASS_SET="client" set SPASS_SET="server" set CER_ROOT_PATH="e:\SSL" :: 路径不存在则建立路径 if not exist %CER_ROOT_PATH% md %CER_ROOT_PATH% ::制做 keystore keytool -genkey -alias cyber_server -keyalg RSA -keystore %CER_ROOT_PATH%/keystore -dname %SERVER_DN% -storepass %SPASS_SET% -keypass %SPASS_SET% -validity 36500 keytool -genkey -alias cyber_client -keyalg RSA -storetype PKCS12 -keystore %CER_ROOT_PATH%/client.key.p12 -dname %SERVER_DN% -keypass %PASS_SET% -storepass %PASS_SET% -validity 36500 keytool -export -alias cyber_server -keystore %CER_ROOT_PATH%/keystore -storepass %SPASS_SET% -rfc -file %CER_ROOT_PATH%/server.cer keytool -export -alias cyber_client -storetype PKCS12 -keystore %CER_ROOT_PATH%/client.key.p12 -storepass %PASS_SET% -rfc -file %CER_ROOT_PATH%/client.cer keytool -import -file %CER_ROOT_PATH%/server.cer -storepass %PASS_SET% -keystore %CER_ROOT_PATH%/truststore.jks -noprompt keytool -import -file %CER_ROOT_PATH%/client.cer -storepass %SPASS_SET% -keystore %CER_ROOT_PATH%/client.truststore -noprompt pause
其中192.168.XXX.XXX
,请修改成本身的域名或IP
运行后生成的文件在e:\SSL,目录结构为
其中keystore和client.truststore是在tomcat中配置的,在client.truststore中已经添加了client.key.p12的公钥,因此上面忘了说了。
client.key.p12须要在客户端导入到“我的”目录中
第一次写博文,请你们多多指教..
下期预告:使用keytool生成证书