Teamcenter Communication mit SSL
Welche Zertifikate und Schlüssel muß ich wo eintragen, damit die Teamcenter-Kommunikation zwischen FSC, AW-Gateway und Web-Tier zum Client per SSL-Verschlüsselt übertragen werden.
SSL Konfiguration
- Alle Zertifikate werden in einem Verzeichnis M:\Tools\TC-Cert abgelegt (UNC: \\DCSERVER\DeploymentCenter\repository\software_extra ), in M:\Tools sollte auch das Tool KeyStore-Explorer abgelegt sein, das das Hantieren mit Zertifikaten und Zertifikatsspeichern vereinfacht.
- Root-CA-Zertifikats-Datei(en) erstellen (z.B. als Base64-Export aus Zertifikatsspeicher)
- Root-Zertifikate in PEM-File zusammenfassen (mit Notepad++ zusammen kopieren, wird später für OpenSSL/curl gebraucht als CA-Chain.pem im Verzeichnis siehe oben ablegen)
- Java-Root Zertifikate bearbeiten, sind in JAVA_HOME\lib\security\cacerts
hier das/die Root-CA-Zertifikat(e) importieren. (Java-Root-CAcerts Passwort changeit)
Das cacerts muß auf allen Maschinen ausgetauscht werden, daher auch im Share ablegen! - Zertifikat-pfx -> (Passwort ???) Schlüssel-Passwort neu setzen (auch für Keystore), Keystore-Format in jks ändern und keystore mit neuem Namen (Endung jks) speichern
=> KSE oder mit "keytool -importkeystore -srckeystore [MON_FICHIER.p12] -srcstoretype pkcs12 -srcalias [ALIAS_SRC] -destkeystore [MON_KEYSTORE.jks] -deststoretype jks -deststorepass [PASSWORD_JKS] -destalias [ALIAS_DEST]
Alias finden mit: keytool -v -list -storetype pkcs12 -keystore FILE_PFX
- Preferences -> für FMS
Default_Transient_Server -> https://servername:4544
Fms_BootStrap_Urls -> https://servername:4544
-
-
- Erstelle Verzeichnis %FSC_HOME%\fsc_config ->
MON_KEYSTORE.jks hin kopieren
CA-Chain.pem hin kopieren
=> ODER: keystore und CA-Chain an zentralem Platz ablegen (für Tomcat z.B.). - Mit FSC_HOME\passwordtool -encrypt key-passwort Eintrag für properties erzeugen
- In fmsmaster URL auf https umstellen.
- fsc.<FSC_ID>.properties aus template erzeugen, epassword ändern, Pfad zum jks-File eintragen (Forward-Slashes!)
- Im Verzeichniss FSC_HOME Datei fsc.clientagent.properties erzeugen:
Inhalt:
>
com.teamcenter.fms.curl.cacerts.file=<PATH_TO_CHAIN_FILE>/ca_chain.pem
< - Dienste neu starten.
- Web-Tier (mit tomcat):
- Ersetze Connector in server.xml durch:
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8080" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="conf/MON_KEYSTORE.jks" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS1.2"/>
ACHTUNG: NIO-Protocol benötigt die native.dll von Tomcat (die aber sowieso installiert werden sollte. - AW-Gateway:
- Im start_service.bat vom gateway-microservice das CA_Chain-File über die Env-Variable NODE_EXTRA_CA_CERTS=<SHARE_PFAD>\ca_chain.pem setzen
- Im config.json URLs ersetzen, key-file-pfad und certificate-pfad eintragen.
- Vis-Server:
- Beim Vis-Pool-Manager, die CA-Chain.pem ins TC_ROOT\vispoolmanager\visserverfv\etc\certs kopieren.
- Beim Vis-Assigner, in den jettyservice.properties die URL vom VisPoolProxy.soaPath anspassen.
- Beim TcFTSIndexer\conf\TcFTSIndexer.properties die Tc:URL anpassen.
- Dispatcher-Client TC-WebTier-URL anpassen.
- In den Preferences die URL anpassen -> https statt http, FQDN (wenn kein Eintrag im Zertifikat für den HOSTNAME allein:
FMS_BootStrap_URLs
Default_Transient_Volume_Server
ActiveWorkspaceHosting.NX.URL
ActiveWorkspaceHosting.URL
WEB_default_site_server
WEB_protocol - Wenn Fehlermeldung FSC proxy error: "errorCode: 77 and errorText = "CURLE_UNKNOWN_ERROR: cURL returned an unknown error.""
=> set TEAMCENTER_SSL_CERT_FILE=<SHARE_PFAD>\CA-Chain.pem
- Erstelle Verzeichnis %FSC_HOME%\fsc_config ->
-
- Problem:
TCCS startet nicht -> Fehlermeldung: "Zertifikate können nicht geprüft werden".
=> TCCS sollte im Windows-Zertifikatsspeicher suchen … Zertifikate sind im System-Speicher vorhanden (anhand Seriennummer geprüft !), werden aber nicht gefunden ?!?
=> Lösung, Änderung der Default-HTTP Configuration im tccs.xml in der TCCS-Config:
<httpconfig>
<maxconnectionsperhost overridable="true" value="8" />
<totalmaxconnections overridable="true" value="10" />
<connectiontimeout overridable="true" value="90000" />
<sockettimeout overridable="true" value="90000" />
<stalechecking overridable="true" value="false" />
<maxretriesreverseproxy overridable="true" value="5" />
<allowchunking overridable="true" value="false" />
<idleconntimeoutms overridable="true" value="3000" />
<idleconnintervalms overridable="true" value="1000" />
<httpversion overridable="true" value="1.1" />
<usesinglecookieheader overridable="true" value="true" />
<allowuntrustedcertificates overridable="true" value="false" />
<allowsmartcardcertload overridable="true" value="false" />
<keystore overridable="true" value="E:\Apps\JAVA\JAVA_HOME\lib\security\cacerts" />
<keystorepassword overridable="true" value="" />
<truststore overridable="true" value="E:\Apps\JAVA\JAVA_HOME\lib\security\cacerts" />
<truststorepassword overridable="true" value="" />
<sslEnabled overridable="true" value="true" />
<keystoretype overridable="true" value="JKS" />
</httpconfig>
Nach DC-Installation (PROD) wird auch Pool und MUX mit https versucht … hab ich nicht zum laufen bekommen, auf http zurückgestellt.