2014-07-16 6 views
0

J'utilise jetty sur linux et utilise ssl. J'ai un certificat auto-signé, et tout fonctionne bien dans le navigateur; J'ai juste besoin de dire au navigateur de faire confiance au certificat car il provient d'une source non fiable. Mais si je tente d'accéder à un lien (comme une image, https://www.xxxx.com/pictures/picture.jpg) de mon application web, il me donne une erreur:Certificat autosigné - Impossible d'accéder aux liens relatifs du client

07/16 08:14:28.708 WARN [log]() EXCEPTION 
javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) 
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1959) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) 
    at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:631) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522) 


Je pense que je dois obtenir le client à faire confiance à l'auto certificat signé. Je l'ai essayé ceci:

En utilisant keytool, créez un certificat pour le courtier:

keytool -genkey -alias broker -keyalg RSA -keystore broker.ks

Export certificat du courtier afin qu'il puisse être partagé avec les clients:

keytool -export -alias broker -keystore broker.ks -file broker_cert

Créer un certificat/fichier de clés pour le client:

keytool -genkey -alias client -keyalg RSA -keystore client.ks

Créer un truststore pour le client, et importer le certificat du courtier:

keytool -import -alias broker -keystore client.ts -file broker_cert

Et j'inclure ces quand je commence la jetée:

javax.net.ssl.keyStore=/path/to/client.ks

javax.net.ssl.keyStorePassword=password

javax.net.ssl.trustStore=/path/to/client.ts


J'ai fait sure jetty utilise le certificat que j'ai généré via le navigateur. Qu'est-ce que je rate?

Répondre

0

Acheté un certificat pour le serveur, qui a résolu le problème.

Questions connexes