2016-05-15 103 views
1

我通過Docker在WildFly 10上部署了Keycloak。 SSL支持已通過cli啓用。最終standalone.xml具有:無法使用瀏覽器通過HTTPS訪問WildFly,但可以通過OpenSSL客戶端訪問

<security-realm name="UndertowRealm"> 
    <server-identities> 
     <ssl> 
     <keystore path="keycloak.jks" relative-to="jboss.server.config.dir" keystore-password="changeit" 
alias="mydomain" key-password="changeit"/> 
     </ssl> 
    </server-identities> 
</security-realm> 

暗流子系統:

<https-listener name="default-https" security-realm="UndertowRealm" 
socket-binding="https"/> 

密鑰產生和放置在$ JBOSS_HOME /獨立/配置

keytool -genkey -noprompt -alias mydomain -dname "CN=mydomain, 
OU=mydomain, O=mydomain, L=none, S=none, C=SI" -keystore 
keycloak.jks -storepass changeit -keypass changeit 

端口8443經由泊塢露出。

在鉻中訪問https://mydomain:8443/導致ERR_CONNECTION_CLOSED。火狐返回「安全連接失敗,連接被中斷......」

然而,OpenSSL的客戶端很好地工作:

openssl s_client -connect mydomain:8443 

輸入:

GET/HTTP/1.1 
Host: https://mydomain:8443 

這將返回Keycloak歡迎頁面。

很明顯,WildFly正在工作,但無論出於何種原因,我都被瀏覽器阻止。這是什麼原因?我的印象是,我應該能夠在任一瀏覽器中添加自簽名證書的例外。也許生成的密鑰長度太短,或者我正在觸及Firefox/Chrome強加的其他安全約束?

回答

1

使用密鑰工具這些參數解決了這個問題:-keyalg RSA -keysize 2048

0

... -dname "CN=mydomain

證書可能是畸形的。瀏覽器和其他用戶代理(如cURL和OpenSSL)使用不同的策略來驗證最終實體證書。如果主機名在通用名稱(CN)中,則瀏覽器將拒絕證書,而其他用戶代理將接受該證書。

簡短的回答這個問題是,在主題備用名稱(SAN),而不是通用名稱(CN)地方DNS名稱。

您仍然可能遇到其他問題,但正確獲取名稱將極大地幫助瀏覽器。


然而,OpenSSL的客戶端很好地工作:
openssl s_client -connect mydomain:8443

OpenSSL的之前 1.1.0沒有執行主機驗證。之前的版本將接受任何名稱。

在這種情況下,cURL或Wget將是一個更好的測試工具。


對於閱讀,你應該使用OpenSSL時進行驗證,請參閱:

對於閱讀的規則主機名和他們應該出現在X509證書,請參閱:

相關問題