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?