ikke før idag.
Klienten
-----------------------
Sæt System properties for trustStore og keyStore samt password, trustStorePassword defaulter til keyStorePassword så det behøver du ikke sætte hvis de er ens. trustStore/keyStore skal pege på det Klient Keystore som jeg beskriver længere nede.
String[][] props = {
{"javax.net.ssl.trustStore", "/Users/simonvalter/ServerKeyStore.jks" },
{"javax.net.ssl.keyStore", "/Users/simonvalter/ServerKeyStore.jks"},
{"javax.net.ssl.keyStorePassword", "changeit" },
};
for (int i = 0; i < props.length; i++) {
System.getProperties().setProperty(props[i][0], props[i][1]);
}
endpoint skal pege på
https://url:portServeren
--------------------
Jeg går ud fra du ikke styrer serversiden men her er hvordan du laver private og public keys. Keystore og Keys password skal være ens.
Simon:~ simonvalter$ keytool -genkey -alias tomcat -keyalg RSA -keystore ServerKeyStore.jks
Enter keystore password: changeit
What is your first and last name?
[Unknown]: Simon valter
..
Is CN=Simon valter, OU=SuperUsers, O=SuperUsers, L=Copenhagen, ST=Copenhagen, C=DK correct?
[no]: yes
Enter key password for <tomcat>
(RETURN if same as keystore password): changeit
Exporter public key til et certifkat.
Simon:~ simonvalter$ keytool -export -alias tomcat -file ClientCertificate.cer -keystore ServerKeyStore.ks -storepass changeit
Certificate stored in file <ClientCertificate.cer>
Importer public key ind i klientens keystore
Simon:~ simonvalter$ keytool -import -trustcacerts -alias tomcat -file ClientCertificate.cer -keystore ClientKeyStore.ks -storepass changeit
Owner: CN=Simon valter, OU=SuperUsers, O=SuperUsers, L=Copenhagen, ST=Copenhagen, C=DK
Issuer: CN=Simon valter, OU=SuperUsers, O=SuperUsers, L=Copenhagen, ST=Copenhagen, C=DK
Serial number: 42e9613a
Valid from: Fri Jul 29 00:50:34 CEST 2005 until: Thu Oct 27 00:50:34 CEST 2005
Certificate fingerprints:
MD5: 7B:49:07:E6:A5:F2:2E:F2:CC:F3:5C:5D:CA:06:A4:7F
SHA1: 5D:22:42:EE:C5:73:67:9E:E5:80:2C:5F:44:F7:C0:0B:9C:C5:CA:D2
Trust this certificate? [no]: yes
Certificate was added to keystore
Det sidste er også på server siden... i dette eksempel er det tomcat..
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="/Users/simonvalter/ServerKeyStore.jks" keystorePass="changeit"
truststoreFile="/Users/simonvalter/ServerKeyStore.jks"/>
Hvis clientAuth er sat til true så skal klienten sende et certificat til serveren for at få adgang. Det vigtige er trustStoreFile og keyStoreFile og password hvor tomcat default bruger "changeit"
Jeg sad fast et stykke tid her da jeg ikke have fat i den nyeste dokumentation for tomcat hvor truststoreFile er dokumenteret så jeg blev ved med at få en invalid_certificate og ældre læse stof om emnet heller ikke har nævnt den.
Sad iøvrigt også et par timer for at få axis til at virke da max os x af en eller anden grund loader nogen 3D .jnilib filer fra /System/Library/Java/Extensions der smider en zip exception .. sjovt hva ;(
Hvis det slet ikke er det som du efterspørger så må du gå lidt mere i detaljer. Hvem er server, hvilken type certifikat osv.