tomcat9配置https


首先使用以下命令生成密鑰庫

keytool -genkey -alias tomcat -keyalg RSA

我輸入的密鑰口令是123456

組織單位名稱就是你的域名,我的就是localhost

得到一個.keystore的文件,我把這個文件復制到tomcat的conf文件目錄里面

在tomcat的server.xml中添加一個connector,代碼如下

復制代碼
1 <Connector
2            protocol="org.apache.coyote.http11.Http11NioProtocol"
3            port="8443" maxThreads="200"
4            scheme="https" secure="true" SSLEnabled="true"
5            keystoreFile="conf/.keystore" keystorePass="123456"
6            clientAuth="false" sslProtocol="TLS"/>
復制代碼

然后重啟tomcat,在瀏覽器中輸入https://localhost:8443就能看到安全連接提示。

 

轉載地址:http://ln-ydc.iteye.com/blog/1330674

 

 

內容概覽:

如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 協議

  1.生成安全證書

  2.配置tomcat

---------------------------------------------------------------------------------------------------------------------------

預備知識:

sso

cas

ssl

https

ca

---------------------------------------------------------------------------------------------------------------------------

環境:

1.java 1.6

2.tomcat 6_0_26

---------------------------------------------------------------------------------------------------------------------------

生成安全證書:

1.java環境:因為SUN公司提供了制作證書的工具keytool。

      在JDK 1.4以后的版本中都包含了這一工具,它的位置為<JAVA_HOME>\bin\keytool.exe。

2.創建證書的命令:

Cmd代碼   收藏代碼
  1. keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "f:\tomcat.keystore"  

參數的意思如下:

 

這里密碼我輸的是tomcat,名字與姓氏為域名,其它的根據具體情況輸入

 

 

以上命令將生產一對非對稱密鑰和自我簽名的證書f:\tomcat.keystore.

將證書保存到你要存放的地方,我的保存在D:\Tools\Web\ssl\tomcat.keystore

注意:“名字與姓氏”應該是域名,輸成了姓名,和真正運行的時候域名不符,會出問題

---------------------------------------------------------------------------------------------------------------------------

配置tomcat:

定位到tomcat的安裝目錄,找到conf下的server.xml文件

找到如下已經被注釋的代碼:

Xml代碼   收藏代碼
  1. <!--  
  2.     <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
  3.                maxThreads="150" scheme="https" secure="true"  
  4.                clientAuth="false" sslProtocol="TLS" />  
  5.     -->  

去掉注釋,修改為:

Xml代碼   收藏代碼
  1. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
  2.               maxThreads="150" scheme="https" secure="true"  
  3.               clientAuth="false" sslProtocol="TLS"   
  4.        keystoreFile="D:\Tools\Web\ssl\tomcat.keystore"  
  5.        keystorePass="tomcat"  
  6.        ciphers="tomcat"/>  

這里,密碼和證書的位置根據個人的具體環境而設置,屬性參數如下所述:

屬性 描述
clientAuth 如果設為true,表示Tomcat要求所有的SSL客戶出示安全證書,對SSL客戶進行身份驗證
keystoreFile 指定keystore文件的存放位置,可以指定絕對路徑,也可以指定相對於<CATALINA_HOME>(Tomcat安裝目錄)環境變量 的相對路徑。如果此項沒有設定,默認情況下,Tomcat將從當前操作系統用戶的用戶目錄下讀取名為“.keystore”的文件。
keystorePass 指定keystore的密碼,如果此項沒有設定,在默認情況下,Tomcat將使用“changeit”作為默認密碼。
sslProtocol 指定套接字(Socket)使用的加密/解密協議,默認值為TLS,用戶不應該修改這個默認值。
ciphers 指定套接字可用的用於加密的密碼清單,多個密碼間以逗號(,)分隔。如果此項沒有設定,在默認情況下,套接字可以使用任意一個可用的密碼。

訪問支持ssl的web站點:

啟動本場tomcat,在瀏覽器中輸入:https://localhost:8443/ ,這里用ie訪問

 

選擇繼續瀏覽此網站

 

 

成功!!

 

遇到的問題:

我在配置的過程中問題,當我修改了server.xml的配置后,啟動tomcat報錯

java.lang.Exception: No Certificate file specified or invalid file format
at org.apache.tomcat.jni.SSLContext.setCertificate(Native Method)
at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:761)
at org.apache.coyote.http11.Http11AprProtocol.init(Http11AprProtocol.java:109)
at org.apache.catalina.connector.Connector.initialize(Connector.java:1123)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:703)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:838)
at org.apache.catalina.startup.Catalina.load(Catalina.java:538)
at org.apache.catalina.startup.Catalina.load(Catalina.java:562)

 

網上找了下,

其實就是將protocol="HTTP/1.1"替換為protocol="org.apache.coyote.http11.Http11Protocol",問題得以解決;

APR給Tomcat的性能提升起到很大作用,建議配置APR方式,這樣就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM