Cyber Recovery: Fehler beim Abrufen des Zertifikats mit TLS-Protokoll
Summary: Nach dem Upgrade auf Cyber Recovery 19.17 gibt es eine neue Option zur Überprüfung des Zertifikats, wenn das TLS-Protokoll (Transport Layer Security) aktiviert wird. In diesem Artikel werden Situationen behandelt, in denen das Abrufen des Zertifikats mit dem TLS-Protokoll fehlgeschlagen ist. ...
Symptoms
Nach dem Upgrade auf Cyber Recovery 19.17 gibt es eine neue Option zur Überprüfung des Zertifikats, wenn das TLS-Protokoll (Transport Layer Security) aktiviert wird. Bei der Überprüfung des Zertifikats wird der folgende Fehler in der Cyber Recovery-Benutzeroberfläche angezeigt:
Mail server certificate is required when enabling TLS.
Cause
In den Cyber Recovery-Protokollen werden die folgenden Einträge gedruckt.
Am crcli.log:
[2024-10-03 11:49:03.273] [DEBUG] [crcli] [restapi_client.go:384 HandleRESTAPIResponse()] : Entering
[2024-10-03 11:49:03.273] [DEBUG] [crcli] [restapi_client.go:392 HandleRESTAPIResponse()] : REST status code :500
[2024-10-03 11:49:03.273] [ERROR] [crcli] [restapi_client.go:401 HandleRESTAPIResponse()] : Failed to retrieve mail server certificate : Failed to connect to mail server: dial tcp: lookup smtp-mail.com: i/o timeout
[2024-10-03 11:49:03.273] [DEBUG] [crcli] [restapi_client.go:402 HandleRESTAPIResponse()] : Exiting
[2024-10-03 11:49:03.273] [ERROR] [crcli] [libcli.go:150 CliErrorExit()] : Failed to retrieve mail server certificate : Failed to connect to mail server: dial tcp: lookup smtp-mail.com: i/o timeout
Am edge.log:
[2024-10-03 11:48:53.268] [DEBUG] [edge] [restapi_client.go:200 callRestApi()] : Perform request.Post path=https://notifications:9096/irapi/v8/notifications/retrieveEmailCert
[2024-10-03 11:49:03.272] [DEBUG] [edge] [restapi_client.go:209 callRestApi()] : status = 500 Internal Server Error
[2024-10-03 11:49:03.272] [DEBUG] [edge] [restapi_client.go:410 GetCRResponse()] : Entering
[2024-10-03 11:49:03.272] [DEBUG] [edge] [restapi_client.go:417 GetCRResponse()] : Exiting
[2024-10-03 11:49:03.272] [DEBUG] [edge] [restapi_client.go:210 callRestApi()] : Exiting
[2024-10-03 11:49:03.272] [DEBUG] [edge] [restapi_client.go:116 CallCRRESTAPI()] : Exiting
[2024-10-03 11:49:03.272] [DEBUG] [edge] [restapi_client.go:57 CallRESTAPIHeader()] : Exiting
[2024-10-03 11:49:03.272] [DEBUG] [edge] [restapi_client.go:384 HandleRESTAPIResponse()] : Entering
[2024-10-03 11:49:03.272] [DEBUG] [edge] [restapi_client.go:392 HandleRESTAPIResponse()] : REST status code :500
[2024-10-03 11:49:03.272] [ERROR] [edge] [restapi_client.go:401 HandleRESTAPIResponse()] : Failed to connect to mail server: dial tcp: lookup smtp-mail.com: i/o timeout
[2024-10-03 11:49:03.272] [DEBUG] [edge] [restapi_client.go:402 HandleRESTAPIResponse()] : Exiting
[2024-10-03 11:49:03.272] [DEBUG] [edge] [jsonerr.go:27 JSONError()] : Entering
[2024-10-03 11:49:03.272] [ERROR] [edge] [jsonerr.go:40 JSONError()] : 500 : Failed to connect to mail server: dial tcp: lookup smtp-mail.com: i/o timeout
[2024-10-03 11:49:03.272] [DEBUG] [edge] [jsonerr.go:44 JSONError()] : Exiting
[2024-10-03 11:49:03.272] [DEBUG] [edge] [notifications.go:560 RetrieveEmailCert()] : Exiting
[2024-10-03 11:49:03.272] [INFO] [edge] [restauth.go:111 func1()] : POST /cr/v8/notifications/retrieveEmailCert End RetrieveEmailCert Elapsed=10.005125439s
Am notifications.log:
[2024-10-03 11:48:53.270] [INFO] [notifications] [restauth.go:68 func1()] : POST /irapi/v8/notifications/retrieveEmailCert Start RetrieveEmailCert
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [restauth.go:210 validateToken()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [restauth.go:194 DecryptToken()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [encoding.go:48 DecodeString()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [encoding.go:56 DecodeString()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [crcrypto.go:558 DecryptCFB()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [crcrypto.go:579 DecryptCFB()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [encoding.go:48 DecodeString()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [encoding.go:56 DecodeString()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [crcrypto.go:112 GenHash()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [crcrypto.go:118 GenHash()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [restauth.go:206 DecryptToken()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [restauth.go:268 ValidateTokenTime()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [restauth.go:281 ValidateTokenTime()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [restauth.go:255 validateToken()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [notifications.go:283 RetrieveEmailCert()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [notifications.go:175 ValidateMailServer()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [notifications.go:201 ValidateMailServerURL()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [notifications.go:210 ValidateMailServerURL()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [notifications.go:215 ValidateMailServerPort()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [notifications.go:222 ValidateMailServerPort()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [notifications.go:196 ValidateMailServer()] : Exiting
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [email.go:227 RetrieveEmailCert()] : Entering
[2024-10-03 11:48:53.270] [DEBUG] [notifications] [email.go:272 GetTLSConn()] : Entering
[2024-10-03 11:49:03.271] [DEBUG] [notifications] [email.go:283 GetTLSConn()] : Exiting
[2024-10-03 11:49:03.272] [ERROR] [notifications] [email.go:235 RetrieveEmailCert()] : Failed to connect to mail server: dial tcp: lookup smtp-mail.com: i/o timeout
[2024-10-03 11:49:03.272] [DEBUG] [notifications] [email.go:236 RetrieveEmailCert()] : Exiting
[2024-10-03 11:49:03.272] [ERROR] [notifications] [notifications.go:321 RetrieveEmailCert()] : Failed to connect to mail server: dial tcp: lookup smtp-mail.com: i/o timeout
[2024-10-03 11:49:03.272] [DEBUG] [notifications] [jsonerr.go:27 JSONError()] : Entering
[2024-10-03 11:49:03.272] [ERROR] [notifications] [jsonerr.go:40 JSONError()] : 500 : Failed to connect to mail server: dial tcp: lookup smtp-mail.com: i/o timeout
[2024-10-03 11:49:03.272] [DEBUG] [notifications] [jsonerr.go:44 JSONError()] : Exiting
[2024-10-03 11:49:03.272] [DEBUG] [notifications] [notifications.go:323 RetrieveEmailCert()] : Exiting
Ab Version 19.17 begann Cyber Recovery mit der Überprüfung des Mailserverzertifikats bei Verwendung von TLS.
In Nicht-DNS-Umgebungen (Domain Name System) schlägt die Eingabe des Mailservers als DNS-Name fehl, da Cyber Recovery den Hostnamen aufgrund des fehlenden DNS in der Umgebung nicht in eine IP-Adresse auflösen kann.
Wenn eine IP-Adresse als Feld für den Mail-/Relay-Server in CR verwendet wird und das vom Mailserver bereitgestellte Zertifikat die IP nicht im Zertifikat enthält, schlägt die Überprüfung fehl, da das Zertifikat anhand der IP überprüft wird.
Es gibt ein paar Workarounds, um dies zum Laufen zu bringen:
- Fügen Sie dem vom Mailserver bereitgestellten Zertifikat die IP-Adresse hinzu, damit die Überprüfung durchgeführt werden kann.
- Fügen Sie den Eintrag für Mailserver und IP in hinzu
/etc/hostsim Benachrichtigungscontainer, damit CR den Mailserver erfolgreich auflösen kann und die Zertifikatsüberprüfung durchgeführt werden kann.
Resolution
Es gibt zwei Möglichkeiten, dieses Problem zu beheben:
- Der Mailserver verwendet einen vollständig qualifizierten Domänennamen (FQDN) und Cyber Recovery kann das Zertifikat nicht abrufen.
- Überprüfen Sie, ob Sie einen DNS-Server in Ihrer Vault-Umgebung verwenden und ob er ordnungsgemäß funktioniert.
- Wenn kein DNS-Server im Vault vorhanden ist, führen Sie die folgenden Schritte aus:
- Geben Sie die SMTP-Serverdetails (Simple Mail Transfer Protocol) in die Hostdateien für den Benachrichtigungs-Docker ein.
- Stellen Sie über SSH eine Verbindung zu Cyber Recovery her.
- Führen Sie diesen Befehl aus:
docker exec -it cr_notifications_1 bash - Öffnen Sie die Datei mit einem Texteditor:
/etc/hosts - Fügen Sie die Einträge für den SMTP-Server als IP, FQDN und Kurzname hinzu.
- Speichern Sie die Datei.
- Führen Sie diesen Befehl aus, um den Docker-Container zu beenden:
exit
- Um den Eintrag im Feld
/etc/hostsDatei während Neustarts persistent ist, gehen Sie wie folgt vor:- Hinzufügen einer Zeile in
cr-install-path>/etc/docker-compose-prod-<current-version>.ymlfür die IP-Adresse, die Sie zu/etc/hostsBenachrichtigungen: - Die neue Zeile, die fett gedruckt ist, sollte den SMTP-FQDN und dann die IP enthalten:
SMTP.server.com:xxx.xxx.xxx.xxx
build: .image: ${registryName}/cr_notifications:${notificationsVersion}container_name: cr_notifications_1security_opt:- no-new-privileges:truehostname: notificationsexpose:- "9096"depends_on:- postgresqlcap_drop:- ALLenvironment:- LD_LIBRARY_PATH=/cr/lockbox/lib- CRHOSTNAME=${dockerHostFQDN}- ENABLE_TLS=${enableTLS}- ENABLE_POSTFIX=${enablePostfix}- GODEBUG=tlskyber=0extra_hosts:- dockerbridge:${dockerBridge}- ${dockerHostFQDN}:${dockerHost}- SMTP.server.com:xxx.xxx.xxx.xxx - Führen Sie dann folgende Schritte aus:
'crsetup.sh – forcerecreate'WENN KEINE JOBS AUSGEFÜHRT WERDEN.
- Hinzufügen einer Zeile in
- Geben Sie die SMTP-Serverdetails (Simple Mail Transfer Protocol) in die Hostdateien für den Benachrichtigungs-Docker ein.
- Wenn Sie eine IP-Adresse für SMTP verwenden, kann Cyber Recovery das Zertifikat nicht abrufen.
-
- In diesem Fall muss ein neues Zertifikat erzeugt werden, das die verwendete IP-Adresse enthält.
Oder
-
- Falls das Zertifikat mit einem FQDN erstellt wurde, anstatt die IP für die Verbindung mit dem SMTP zu verwenden, verwenden Sie den FQDN in der Cyber Recovery-Benutzeroberfläche.