La configurazione di un certificato SSL per WSO2 API Manager non è semplice, poiché richiede la creazione di un archivio chiavi e l'aggiunta di un certificato SSL al deposito chiavi. In questo articolo vedremo come configurare WSO2 con il certificato Let's Encrypt.
Presumo che tu abbia già il certificato Let's Encrypt emesso e pronto per aggiungerlo ai Keystore WSO2. In caso contrario, vai avanti e prendine uno per il tuo dominio. Nel mio caso, avevo il server NGINX come front-end dei servizi WSO2, quindi avevo ottenuto il certificato Let's Encrypt usando il certbot
programma per il server web NGINX.
$ sudo certbot --nginx -d tg.com -d www.tg.com
Una volta emesso il certificato, troverai .pem
file in '/etc/letsencrypt/live/<domain_name>/
' cartella. Ora copia il cert.pem
e privkey.pem
file nella tua home directory e segui i passaggi seguenti.
Come configurare WSO2 con il certificato Let's Encrypt?
Passaggio 1:crea il file PKCS12/PFX utilizzando il cert.pem
e privkey.pem
file.
Utilizzeremo il comando OpenSSL per esportare i certificati in formato PKCS12/PFX e proteggerli con una password complessa quando richiesto.
$ openssl pkcs12 -export -in cert.pem -inkey privkey.pem -name "letsencrypt" -out letsencrypt.pfxNota:
-name opzione prende alias come valore. L'alias può essere qualsiasi nome ed è necessario per utilizzarlo successivamente nei file di configurazione di WSO2.
Passaggio 2:creazione di Java Keystore
Una volta che hai il file PFX pronto, crea Java Keystore usando il comando seguente.
$ keytool -importkeystore -srckeystore letsencrypt.pfx -srcstoretype pkcs12 -destkeystore letsencrypt.jks -deststoretype JKS
Affinché il comando precedente funzioni, dovrai avere installato JDK (ovviamente, hai già il programma di installazione di WSO2 pronto). Il comando keytool
si troverebbe all'interno di bin
directory del JDK.
Il comando precedente richiederà la password sia del keystore di origine che di quello di destinazione.
Passaggio 3:esporta la chiave pubblica dal file Java Keystore.
WSO2 viene fornito con il truststore pubblico (client-truststore.jks
) e questo file deve essere aggiornato con la chiave pubblica del file JKS creato nel passaggio 2.
Quindi andiamo avanti ed esportiamo la chiave pubblica da letsencrypt.jks
file. Per farlo, esegui il comando seguente.
$ keytool -export -alias "letsencrypt" -keystore letsencrypt.jks -file letsencrypt.pemNota:
Ricorda di utilizzare lo stesso alias "letsencrypt
' che avevi impostato al passaggio 1.
Passaggio 4 :Sposta letsencrypt.jks
e letsencrypt.pem
file nella directory seguente.
$ cp letsencrypt.jks letsencrypt.pem <WSO2_APIM>/repository/resources/securityNota:
WSO2_APIM deve essere sostituito con la directory di installazione di WSO2.
Passaggio 5: Aggiungi una chiave pubblica a client-truststore.jks
$ cd <WSO2_APIM>/repository/resources/security
$ keytool -import -alias letsencrypt -file letsencrypt.pem -keystore client-truststore.jks -storepass wso2carbonNota:
-storepass prende il valore come wso2carbon
, che è la password predefinita del truststore del client.
Passaggio 6:configura il keystore con WSO2 API Manager.
Configura WSO2 API Manager con il nuovo Keystore creato nel passaggio 2. A tale scopo, è necessario modificare i seguenti file.
Alcune versioni di WSO2 richiedono carbon.xml
file da modificare, ma le ultime versioni richiedono solo il deployment.toml
file da modificare (poiché il WSO2 è riuscito a semplificare il modello di configurazione).
$ vi <WSO2_APIM>/repository/conf/carbon.xml
Cerca <KeyStore>
tag e sostituiscilo con il seguente.
<KeyStore> <!-- Keystore file location--> <Location>${carbon.home}/repository/resources/security/letsencrypt.jks</Location> <!-- Keystore type (JKS/PKCS12 etc.)--> <Type>JKS</Type> <!-- Keystore password--> <Password><Keystore password></Password> <!-- Private Key alias--> <KeyAlias>letsencrypt</KeyAlias> <!-- Private Key password--> <KeyPassword><Keystore password></KeyPassword> </KeyStore>Nota:
Ricorda di utilizzare la stessa password e alias Keystore impostati durante la creazione del file JKS nel passaggio 2
Modifica il deployment.toml
file con i dettagli del nuovo Keystore:
$vi <WSO2_APIM>/repository/conf/deployment.toml
[keystore.tls] file_name = "letsencrypt.jks" type = "JKS" password = "<Keystore password>" alias = "letsencrypt" key_password = "<Keystore password>"
Suppongo di modificare deployment.toml
dovrebbe bastare. Tuttavia, se le cose non funzionano subito, puoi modificare i file seguenti (probabilmente necessari per le versioni precedenti di WSO2 API Manager).
$ cd <WSO2_APIM>/repository/conf/ $ grep -rn "*.jks"
Modifica tutti i file elencati con le voci di Keystore pertinenti.
Ora vai avanti e riavvia il server WSO2.
$ <WSO_APIM>/bin/api-manager.sh --restart
Passaggio 7 :Accedi all'interfaccia di Carbon e controlla se il nuovo Keystore è stato aggiunto correttamente. Fai clic su Keystores > List.
Passaggio 8: Se non trovi il Keystore, puoi aggiungerlo manualmente facendo clic su Keystores > Add
.
Questo è tutto! Ora vedrai il lucchetto verde accanto all'URL WSO2 nella barra degli indirizzi del browser.
Ancora, hai problemi? Potrebbe essere necessario guardare i seguenti riferimenti.
- Impostazione di WSO2 con un certificato valido
- Importazione del certificato SSL nei Keystore WSO2