SSL与WildFly 8和Undertow
我一直在研究WildFly 8的一些安全性主題,偶然發(fā)現(xiàn)了一些配置文檔,這些文檔沒有很好地記錄。 其中之一是新Web子系統(tǒng)Undertow的TLS / SSL配置。 有許多關(guān)于較舊的Web子系統(tǒng)的文檔,并且確實(shí)仍然可以使用,但是這里是使用新方法進(jìn)行配置的簡(jiǎn)短方法。
生成密鑰庫(kù)和自簽名證書
第一步是生成證書。 在這種情況下,它將是一個(gè)自簽名的,足以顯示如何配置所有內(nèi)容。 我將使用普通的Java方式,因此您所需要的只是JRE keytool。 Java Keytool是密鑰和證書管理實(shí)用程序。 它允許用戶管理自己的公鑰/私鑰對(duì)和證書。 它還允許用戶緩存證書。 Java Keytool將密鑰和證書存儲(chǔ)在所謂的密鑰庫(kù)中。 默認(rèn)情況下,Java密鑰庫(kù)被實(shí)現(xiàn)為文件。 它使用密碼保護(hù)私鑰。 Keytool密鑰庫(kù)包含私鑰和完成信任鏈并建立主證書的可信賴性所需的任何證書。
請(qǐng)記住,SSL證書具有兩個(gè)基本目的:分發(fā)公共密鑰和驗(yàn)證服務(wù)器的身份,以便用戶知道自己不會(huì)將信息發(fā)送到錯(cuò)誤的服務(wù)器。 只有當(dāng)服務(wù)器由受信任的第三方簽名時(shí),它才能正確驗(yàn)證服務(wù)器的身份。 自簽名證書是由自身而非受信任的權(quán)威機(jī)構(gòu)簽名的證書。
切換到命令行并執(zhí)行以下命令,該命令設(shè)置了一些默認(rèn)值,并提示您輸入更多信息。
$>keytool -genkey -alias mycert -keyalg RSA -sigalg MD5withRSA -keystore my.jks -storepass secret ?-keypass secret -validity 9999What is your first and last name?[Unknown]: ?localhost What is the name of your organizational unit?[Unknown]: ?myfear What is the name of your organization?[Unknown]: ?eisele.net What is the name of your City or Locality?[Unknown]: ?Grasbrun What is the name of your State or Province?[Unknown]: ?Bavaria What is the two-letter country code for this unit?[Unknown]: ?ME Is CN=localhost, OU=myfear, O=eisele.net, L=Grasbrun, ST=Bavaria, C=ME correct?[no]: ?yes確保將所需的“主機(jī)名”放入“名字和姓氏”字段中,否則在某些瀏覽器中永久接受此證書作為例外時(shí),您可能會(huì)遇到問題。 Chrome對(duì)此沒有任何問題。
該命令在執(zhí)行的文件夾中生成一個(gè)my.jks文件。 將此復(fù)制到您的WildFly配置目錄(%JBOSS_HOME%/ standalone / config)。
配置其他WildFly安全領(lǐng)域
下一步是在standalone.xml的WildFly安全領(lǐng)域部分中,將新的密鑰庫(kù)配置為ssl的服務(wù)器身份(如果使用-ha或其他版本,請(qǐng)對(duì)其進(jìn)行編輯)。
<management><security-realms> <!-- ... --><security-realm name="UndertowRealm"><server-identities><ssl><keystore path="my.keystore" relative-to="jboss.server.config.dir" keystore-password="secret" alias="mycert" key-password="secret"/></ssl></server-identities></security-realm> <!-- ... -->您已準(zhǔn)備好進(jìn)行下一步。
為SSL配置Undertow子系統(tǒng)
如果您使用默認(rèn)服務(wù)器運(yùn)行,請(qǐng)將https-listener添加到undertow子系統(tǒng):
<subsystem xmlns="urn:jboss:domain:undertow:1.2"><!-- ... --><server name="default-server"><!-- ... --><https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/> <! -- ... -->就是這樣,現(xiàn)在您可以連接到實(shí)例https:// localhost:8443 /的ssl端口了。 請(qǐng)注意,您會(huì)收到隱私錯(cuò)誤(比較屏幕截圖)。 如果需要使用完全簽名的證書,則通常會(huì)從證書頒發(fā)機(jī)構(gòu)獲取PEM文件。 在這種情況下,您需要將其導(dǎo)入密鑰庫(kù)。 這個(gè)stackoverflow線程可能會(huì)幫助您。
翻譯自: https://www.javacodegeeks.com/2015/01/ssl-with-wildfly-8-and-undertow.html
總結(jié)
以上是生活随笔為你收集整理的SSL与WildFly 8和Undertow的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓网络应用开发(安卓网络应用)
- 下一篇: 一种ddos攻击检测方法(一种ddos攻