Mental model (before commands)
In real Wipro: company CA plays the role of steps that use ca.key below.
Locally: you are the CA (private CA; root ca.crt is self-signed; leaf certs are CA-signed, not “self-signed leaves”).
Bootstrap like bootstrap-pr.yml only references the packed files (ispKeyStore.p12, ispTrustStore.jks) — not raw .crt/.key.
#1 Create CA (Wipro PKI / you-as-CA for play)
#2 Server identity — key, CSR, CA returns cert
#3 Client identity — same pattern
Let’s Encrypt would only cover a public server domain flow roughly like #2 — not typical store client certs like #3.
#4 Trust-store — one shared file (CA only)
≈ your ispTrustStore.jks (name may be .jks even if type is PKCS12).
#5 Key-stores — you/SRE pack after CA returns .crt
CA does not have to give you .p12; you/SRE build containers:
-certfile ca.crt = optional chain inside the key-store; trust-store still needs ca.crt for verifying peers.
≈ your ispKeyStore.p12 (client identity on the store box).
#6 Deploy (out of band — before apps start)
Point bootstrap at those paths + passwords (optionally Jasypt ENC(...) + --jasypt.encryptor.password).
No exchange of key-store files between apps at runtime. Handshake sends public certs only; private keys prove possession locally.