通過優銳課核心java學習筆記中,我們可以看到,碼了很多專業的相關知識, 分享給大家參考學習。
深入瞭解Tomcat,瞭解如何創建自簽名RSA密鑰,ECDSA密鑰,以及如何通過多次保留驗證Tomcat。
在上一篇博客文章中,我們研究了Tomcat 8.5+如何使用SNI將證書映射到請求的主機名。
Tomcat 8.5+可以更進一步,併爲每個主機支持多種證書類型。 這對於在較舊的瀏覽器中支持RSA以及在兼容的瀏覽器中支持ECDSA最爲有用。
在此博客文章中,我們將研究如何使用多種證書類型配置Tomcat。
創建自簽名RSA密鑰
要生成RSA私鑰和自簽名證書,請使用以下命令:
openssl req -x509 -newkey rsa:4096 -keyout rsa.key -out rsa.crt -days 365
創建自簽名的ECDSA密鑰
要創建ECDSA私鑰,請使用以下命令:
openssl ecparam -genkey -out ecdsa.key -name prime256v1
名稱參數是命令返回的列表中的一個:
openssl ecparam -list_curves
OpenSSL支持大量曲線,但是瀏覽器通常僅支持非常少量的曲線。 SSL實驗室允許你測試瀏覽器對命名曲線的支持。 在下面的屏幕截圖中,你可以看到Firefox 57支持的曲線:x25519,secp256r1,secp384r1,secp521r1。
secp256r1是OpenSSLprime256v1曲線。
然後使用以下命令從私鑰創建證書:
openssl req -x509 -new -key ecdsa.key -out ecdsa.crt
使用多個鍵配置Tomcat
爲了支持兩種證書類型,可以將多個<Certificate>元素添加到<SSLHostConfig>元素中。 定義多個<Certificate>元素時,每個元素都必須具有唯一的類型屬性。 RSA證書具有RSA類型,而ECDSA證書具有EC類型。
這是Tomcat server.xml配置文件的片段,其中包含使用上述OpenSSL命令創建的兩個自簽名證書和私鑰。
<Connector SSLEnabled="true" port="62000" protocol="org.apache.coyote.http11.Http11AprProtocol">
<SSLHostConfig>
<Certificate certificateFile="${catalina.base}/conf/ecdsa.crt" certificateKeyFile="${catalina.base}/conf/ecdsa.key" type="EC"/>
<Certificate certificateFile="${catalina.base}/conf/rsa.crt" certificateKeyFile="${catalina.base}/conf/rsa.key" type="RSA"/>
</SSLHostConfig>
</Connector>
此代碼段使用APR協議,該協議接受OpenSSL創建的PEM文件。 有關在Tomcat中啓用APR的更多信息,請參見構建Apache可移植運行時。
驗證配置
High-Tech Bridge提供了一項在線服務,用於驗證Web服務器的安全性配置。
在此屏幕截圖中,我們可以看到Tomcat服務器同時公開了RSA和ECDSA證書。
結論
Tomcat在爲單個HTTPS端口同時支持RSA和ECDSA證書的能力方面非常獨特。 這使Tomcat可以在不犧牲安全性的情況下向各種客戶端提供HTTPS。 只需定義兩個具有不同類型屬性的<Connector>元素即可實現此配置。
> 喜歡這篇文章的可以點個贊,歡迎大家留言評論,記得關注我,每天持續更新技術乾貨、職場趣事、海量面試資料等等
> 如果你對java技術很感興趣也可以交流學習,共同學習進步。
> 不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代
文章寫道這裏,歡迎完善交流。最後奉上近期整理出來的一套完整的java架構思維導圖,分享給大家對照知識點參考學習。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java乾貨