over 8 years ago
TLS好像越來越多人用了,沒在Tomcat上設定過所以紀錄一下
先利用keytool來產生所需要的憑證檔
SET PATH=C:\Program Files\Java\jdk1.8.0_05\bin;%PATH%
keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keystore C:\keytool\keystore.jks -storepass keystore -dname "CN=名字與姓氏,OU=組織單位名稱,O=組織名稱,L=城市或區域名稱,ST=州或省份名稱,C=單位的兩字母國家代碼"
修改server.xml
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" SSLEnabled="true" maxThreads="200"
scheme="https" secure="true"
keystoreFile="D:/SimulationServer/apache-tomcat-7.0.53/keystore.jks"
keystorePass="keystore" clientAuth="false"
sslProtocol="TLSv1.2" />
重新啟動Tomcat即可
如果需要強制啟用SSL連線
修改web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
如果Tomcat觸發Could not load org.bouncycastle.jce.provider.symmetric.AES
可能是因為項目內有用到這元件,但是在設定SSL不知道為啥會觸發
可以把bouncycastle設定到Tomcat這樣就不會觸發此問題
修改 jdk1.7.0_55\jre\lib\security\java.security
#新增
security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
並將bcprov-jdk16-1.46.jar放到Tomcat下面的lib
就可以了