在Tomcat中混合密鑰

通過優銳課核心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乾貨

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章