PASOE i SSL cz. II
W poprzednim artykule omówiłem czynności wstępne związane z wygenerowaniem kluczy i certyfikatów. Czas teraz zająć się konfiguracją po stronie klienta ABL i przetestowaniem połączenia.
Gdy serwer przedstawia swój certyfikat klientowi, klient musi mieć (w celu weryfikacji) certyfikat zaimportowany do swojego magazynu certyfikatów.
OpenEdge udostępnia narzędzie certutil do importowania certyfikatu CA do magazynu certyfikatów OpenEdge w katalogu %DLC%\certs. W naszym przypadku składnia wygląda następująco:
certutil -import C:\OpenEdge128\keys\requests\mycert.cer
Każdy klient łączący się z instancją musi mieć kopię pliku certyfikatu wygenerowanego podczas importu (tutaj: 1cafad6a). Należy więc skopiować ten plik do katalogu %DLC%\certs po stronie klienta.
Teraz zajmiemy się PASOE. Przechodzimy do katalogu conf dla naszej instancji (tu: C:\WrkOpenEdge128\mypasoe\conf) i wykonujemy kopię zapasową pliku tomcat-keystore.p12 np. do pliku tomcat-keystore.p12.original.
Wykonujemy polecenie sslc, aby wyeksportować informacje z pliku PEM do magazynu kluczy Tomcat o nast. składni:
sslc pkcs12 -export -in [signed public key file name].pem -out tomcat-keystore.p12 -name [alias name]
W nazwie aliasu należy unikać dużych liter. Musimy pamiętać ustanowione wcześniej hasło dla PEM oraz podać dwa razy nowe hasło dla exportu (tutaj: MyExpPass).
sslc pkcs12 -export -in C:\OpenEdge128\keys\mycert.pem -out tomcat-keystore.p12 -name mysslkey
Teraz trzeba zaktualizować plik mypasoe/conf/catalina.properties a dokładnie dwa wpisy w sekcji JSSE keystore: psc.as.https.keypass musi mieć wartość naszego hasła do exportu, a psc.as.https.keyalias wartość aliasu, jak poniżej.
Po tych wszystkich zabiegach można przetestować połączenie. Zaczniemy od REST, czyli https:localhost:8814… Widać, że usługa zwraca dane.
Powinniśmy dodać także certyfikat do przeglądarki, ale tylko w przypadku prawdziwego certyfikatu, wydanego przez CA. Tutaj nie ma to znaczenia.
Teraz przetestujemy warstwę transportową APSV. Z procedury ABL łączymy się po https i uruchamiamy znaną już procedurę na appserwerze. Wszystko działa poprawnie.