Watsonx.data Certificates
There may be situations where the self-signed certificates in the watsonx.data Developer image may be invalid. If you are attempting to connect to the watsonx.data system from outside the virtual machine, you will need to run the following commands to fix the self-signed certificate.
Step 1: Connect to the Server
Use the SSH port to connect into the server and make sure that you become the root user.
sudo su -
Step 2: Update the Certificate
We need to update the certificate by using a utility in the developer toolbox. Start the toolbox code by switching to the bin directory and issuing the following command.
cd /root/ibm-lh-dev/bin
./dev-sandbox
Once inside the development container, you will need to update the program that generates the certificates. Note: The certificate should cover all TechZone locations. If for some reason your TechZone server does not match the pattern *.services.cloud.techzone.ibm.com, update it in the command below.
sed -i '/DNS.14.*/a DNS.15 = watsonxdata' /scripts/gen_certs.sh
sed -i '/DNS.15.*/a DNS.16 = watsonxdata.gym.lan' /scripts/gen_certs.sh
sed -i '/DNS.16.*/a DNS.17 = *.services.cloud.techzone.ibm.com' /scripts/gen_certs.sh
./scripts/gen_certs.sh
Once the script completes, exit the toolkit.
exit
Step 3: Stop and Restart the System
The certificates need to be replaced in all the running containers. You must stop and restart them. You must include the diagnostic flag or else the system will not work properly. The startup will take some time to complete. The Postgres pod will display some warning messages which can be safely ignored.
/root/ibm-lh-dev/bin/stop-milvus
/root/ibm-lh-dev/bin/stop
export LH_RUN_MODE=diag
/root/ibm-lh-dev/bin/start
/root/ibm-lh-dev/bin/start-milvus
Step 4: Generate Custom Certificate
The first step is to copy the new certificates to the central /certs directory use by this image.
docker cp ibm-lh-presto:/mnt/infra/tls/lh-ssl-ts.jks /certs/lh-ssl-ts.jks
docker cp ibm-lh-presto:/mnt/infra/tls/cert.crt /certs/lh-ssl-ts.crt
Next we need to generate the certificate file that is used by a number of the examples in the lab instructions.
rm -f presto.crt
echo QUIT | openssl s_client -showcerts -connect 127.0.0.1:8443 | awk '/-----BEGIN CERTIFICATE-----/ {p=1}; p; /-----END CERTIFICATE-----/ {p=0}' > presto.crt
You can print the certificate if you need it for connections from CP4D.
cat presto.crt
Step 5: Generate Java Keystore File
The next step will create the Java Keystore file. When prompted, use a password of watsonx.data and say yes to accepting the certificate. Make sure that you see your host in the list. For instance, useast.services.cloud.techzone.ibm.com should be displayed when you see the results.
rm -f presto-key.jks
keytool -import -alias presto-crt -file ./presto.crt -keystore ./presto-key.jks
The following is an example of the output from the keytool command.
Owner: CN=Dummy-Self-signed-Cert, EMAILADDRESS=dummy@example.dum, OU=For-CPD, O=Data and AI, L=Home-Town, ST=XX, C=YY
Issuer: CN=Dummy-Self-signed-Cert, EMAILADDRESS=dummy@example.dum, OU=For-CPD, O=Data and AI, L=Home-Town, ST=XX, C=YY
Serial number: 73f26644ad83ac8cdf9afbda6006d4e52f244fac
Valid from: Tue Mar 05 17:42:56 EST 2024 until: Wed May 23 18:42:56 EDT 2035
Certificate fingerprints:
SHA1: 3A:6C:52:80:3D:14:CF:D0:E7:AC:14:13:6F:46:FB:B1:8C:BA:E4:37
SHA256: 28:E7:AD:4E:BA:5F:00:4C:B7:2E:61:3E:3B:96:E5:DF:01:D5:80:CE:1A:B3:EF:B7:86:11:26:4A:B6:7C:90:8A
Signature algorithm name: SHA512withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
Extensions:
#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
serverAuth
]
#2: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
DNSName: ibm-lh-presto-svc
DNSName: *.svc.cluster.local
DNSName: api-svc
DNSName: *.api
DNSName: localhost
DNSName: ibm-lh-hive-metastore
DNSName: ibm-lh-hive-metastore-svc
DNSName: lhconsole-api-svc
DNSName: lhconsole-nodeclient-svc
DNSName: ibm-lh-ranger-svc
DNSName: ibm-lh-javaapi-svc
DNSName: ibm-lh-prestissimo-svc
DNSName: ibm-lh-qhmm
DNSName: ibm-lh-qhmm-svc
DNSName: watsonxdata
DNSName: watsonxdata.gym.lan
DNSName: *.services.cloud.techzone.ibm.com
]
Trust this certificate? [no]: yes
Certificate was added to keystore
Step 6: Create Certificate and Keystore Copies
The final step is to copy the certs and keystore values in a central location so they can be used in various scripts and notebooks.
\cp -f presto-key.jks /certs
\cp -f presto.crt /certs
chmod +r /certs/*.*
\cp -rf /certs /notebooks/