Die Jira Server Rest API funktioniert mit SSL nicht ordnungsgemäß

Die Jira Server Rest API funktioniert mit SSL nicht ordnungsgemäß

Ich habe eine Jira-Instanz auf einem Debian-Server laufen, auf die ich von einer Cloud-Anwendung namens HockeyApp aus zugreifen möchte. Das Problem tritt auf, wenn HockeyApp versucht, auf die Projektliste von Jira zuzugreifen (schlägt fehl, ohne dass ein Fehler auftritt). Also habe ich die Jira-API überprüft und eine Methode gefunden, von der ich erwarte, dass sie vom HockeyApp-Backend aufgerufen wird.

Wenn ich mit Chrome auf die API zugreife, https://jira.company.com/rest/api/latest/projecterhalte ich die erwarteten Ergebnisse als JSON. Aber wenn ich versuche, diese API von Postman, curl oder httpie aus aufzurufen, erhalte ich jedes Mal Fehler.

curl sagt mir:

curl: (60) SSL-Zertifikatproblem: Lokales Ausstellerzertifikat konnte nicht abgerufen werden. Weitere Details hier:https://curl.haxx.se/docs/sslcerts.html

curl konnte die Legitimität des Servers nicht überprüfen und konnte daher keine sichere Verbindung zu ihm herstellen. Weitere Informationen zu diesem Problem und seiner Behebung finden Sie auf der oben genannten Webseite.

Also habe ich versucht, die neueste Datei cacert-2018-10-17.pem herunterzuladen und es erneut versucht. Ohne Erfolg. Wenn ich die -kOption hinzufüge, die SSL-Verifizierung zu ignorieren, erhalte ich die erwarteten Ergebnisse.

Postbote sagt mir: Bildbeschreibung hier eingeben

Wenn ich die SSL-Verifizierung in den Einstellungen von Postman deaktiviere, erhalte ich die erwarteten Ergebnisse. Der Server verwendet jedoch kein selbstsigniertes SSL-Zertifikat. Das Zertifikat sieht folgendermaßen aus: Bildbeschreibung hier eingeben

Das Zertifikat funktioniert einwandfrei in allen Browsern und anderen verbundenen Anwendungen wie Bitbucket und Confluence.

Wie kann ich herausfinden, was diese Probleme verursacht?

Antwort1

Nach langem Suchen habe ich schließlich herausgefunden, was das Problem verursacht hat.

Ich habe begonnen, den Netzwerkverkehr zu untersuchen, als ich mit Wireshark einen REST-Aufruf von cURL ausführte, und fand heraus, dass das Zertifikat tatsächlich fehlerhaft ist – Chrome stört das einfach nicht.

Bildbeschreibung hier eingeben

also habe ich das Zertifikat mit folgendem überprüft:

openssl s_client -showcerts -connect jira.company.com:443

die antwortet mit:

Start Time: 1544006181
Timeout   : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)

Schließlich fand ich heraus, dass das auf meinem Server verwendete Zertifikat nicht die vollständige Zertifizierungskette bereitstellt. Aus diesem Grund lehnen einige Clients es ab.

Ich habe das JKS geändert, um die vollständige Kette zu enthalten, indem ich die CRT-Dateien in eine Datei company.com.pem kopiert habe (ausführlichere Beschreibung hier:https://www.digicert.com/ssl-support/pem-ssl-creation.htm)

-----BEGIN CERTIFICATE----- 
(MyCompany.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Intermediate.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Root.crt) 
-----END CERTIFICATE-----

und erstellte einen neuen JKS für die Jira-Installation mit

openssl pkcs12 -export -in company.com.pem -name tomcat -out jira.p12
keytool -importkeystore -srckeystore jira.p12 -srcstoretype pkcs12 
        -destkeystore jira.jks -deststoretype JKS

verwandte Informationen