WildFly с сертификатами клиента: javax.net.ssl.SSLException: Получено фатальное предупреждение: unknown_ca

Я пытаюсь установить сервер wildfly9 с авторизацией сертификата клиента. Для этого у меня есть:

  1. На клиенте: Создать самоподписанный сертификат:

     keytool -genkey -keystore client.
     -keyalg RSA -keysize 4096 -storetype pkcs12 -alias myClient
    
  2. На клиенте: экспортный сертификат

     keytool -exportcert -keystore client.keystore -alias myClient 
     -storetype pkcs12 -file myClient.crt
    
  3. На сервере: Импортируйте файл сертификата crt в хранилище доверенных сертификатов

     keytool -import -file myClient.crt 
     -keystore /etc/pki/wildfly/client.truststore
    
  4. На сервере: настройка конфигурации wildfly (включение аутентификации по сертификату клиента):

     
     <сервер-идентификаторы>
     
     <путь к хранилищу ключей = "/ etc / pki / wildfly / server.keystore" keystore-password = "123456" alias = "server" key-password = "123456" />
     
     
     <проверка подлинности>
     
     
     
     
    
    ...
    
     
     
     ...
     
     
    

Клиент - это скрипт на Python. Для этого клиента мне нужен сертификат и ключ в формате PEM. Чтобы экспортировать сертификат в PEM, я делаю (все на стороне клиента):

  1. Экспорт ключа сертификата:

     keytool -v -importkeystore -srckeystore client.keystore
     -srcalias myClient -destkeystore myClient.key.tmp.pem 
     -deststoretype PKCS12 -destkeypass 123456
    
  2. Удалите пароль с ключа (да, конечно, я также ограничу доступ к ключу позже, изменив режим файла):

     openssl pkcs12 -in myClient.key.tmp.pem -nocerts 
     -nodes> myClient.key.pem
    
    1. Удалите все внешние '----- BEGIN PRIVATE KEY -----' и '----- END PRIVATE KEY -----' myClient.key.pem

    2. Экспорт сертификата как PEM:

      keytool -exportcert -keystore client.keystore -alias myClient -rfc -file myClient.pem

Но каждый раз, когда я хочу подключиться к серверу, я получаю (на сервере) ошибку:

2016-10-31 09:50:55,102 DEBUG [io.undertow.request.io] (default I/O-1) Error reading request: javax.net.ssl.SSLException: Received fatal alert: unknown_ca
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666)
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634)
    at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1800)
    at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083)
    at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907)
    at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
    at org.xnio.ssl.JsseSslConduitEngine.engineUnwrap(JsseSslConduitEngine.java:688)
    at org.xnio.ssl.JsseSslConduitEngine.unwrap(JsseSslConduitEngine.java:620)
    at org.xnio.ssl.JsseSslConduitEngine.unwrap(JsseSslConduitEngine.java:574)
    at org.xnio.ssl.JsseSslStreamSourceConduit.read(JsseSslStreamSourceConduit.java:89)
    at org.xnio.conduits.ConduitStreamSourceChannel.read(ConduitStreamSourceChannel.java:127)
    at io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:150)
    at io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:128)
    at io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:56)
    at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
    at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
    at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:88)
    at org.xnio.nio.WorkerThread.run(WorkerThread.java:539)

Если я отключу аутентификацию сертификата клиента, все в порядке. значит, с аутентификацией сертификата клиента должно быть что-то не так.

Кто-нибудь знает, в чем дело?

0
задан 31 October 2016 в 11:22
1 ответ

Мы не можем решить эту проблему. У нас есть еще одна установка (наша тестовая система), которую мы можем успешно настроить. Тем не мение. Теперь мы поставили перед сервером wildfly прокси-сервер apache httpd. Прокси-сервер apache теперь также управляет материалами сертификатов клиента. У нас это работает.

0
ответ дан 5 December 2019 в 09:23

Теги

Похожие вопросы