sexta-feira, 1 de abril de 2016

OWM ou Java Keystore - Renovando certificado SSL

SINTOMA

O certificado está próximo de expirar e é necessário enviar uma nova requisição(CSR) para o órgão responsável pela confiabilidade do mesmo.

PROBLEMA

As soluções abaixo abordam duas formas de gestão de certificado, sendo uma a padrão do Java(JKS), um keystore para armazenamento das primary keys e trustedcas, e outra a gestão pelo OWM(Oracle Wallet Manager). 

SOLUÇÃO
Gerando um novo CSR

OWM: Abra o OWM, após abra o wallet alvo da aplicação que o utiliza(Apache, IIS, OHS, JEEcontaires) e vá na guia de operação e lá clique em 'Request CSR'. Feito isto preencha os dados pertinentes para entidade e finalize o processo. Aparecerá um novo certificado em sua relação com a informação  de 'certified requested'. Então é a hora de pegar o conteúdo apresentado ao clicar neste novo certificado e enviar o conteúdo para o órgão ou cliente enviar o nova public key, um exemplo de CSR abaixo: 

-----BEGIN CERTIFICATE REQUEST-----
MIIDUDCCAjgCAQAwgcsxCzAJBgNVBAYTAkJSMRowGAYDVQQIDBFSaW8gR3JhbmRl
IGRvIFN1bDEPMA0GA1UEBwwGQ2Fub2FzMTIwMAYDVQQKDClVbmlmZXJ0aWwgVW5p
dmVyc2FsIGRlIEZlcnRpbGl6YW50ZXMgTFREQTELMAkGA1UECwwCVEkxIDAeBgNV
BAMMF3BvcnRhbC51bmlmZXJ0aWwuY29tLmJyMSwwKgYJKoZIhvcNAQkBFh1tYXJp
c2EuY29zdGFAdW5pqwZmVydGlsLmNvbS5icjCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBALVjtxq/9YfEHkoE5QsmWtvwP+19g07cFji+UXO7wy5qwpfr2SGe
XdjiTdDigwBzmsVzCM+B/kB00VqQkeey1xeveNIkZ2RbjkgQRHTVrcbDn+M/3WPN
nyotfr0yFBYxswvewqeycxfasz745Zbr8TM8GOKaUGgjzu7hjBhnB8p2jDjEQ4aBuEE
cHzFS2eo/AtlXVoasdsa dasd asd qCDvXV7KUosmOs/2VnJeThe46cp31NANRI/
d0I8n5nNnRVmOnlg2DgmEnswijTtQPKTkEFJgC8gZ+qyFRDrP5KTDi/FR8LyWLrp
CXT1nxphPs/dpCQeqweqwcoEHD54mkSsaExY38D7kCAwEAAaA/MBgGCSqGSIb3DQ
wq CVqrqr
FrjUh/QDrS+GWTNY91xG4BPE/GwOJt6KwkCVjsGs9xebuqI1M5dVaOSTGW0fdmvy
F66EryVSckRuni5H7ec17VjwQCdrEoVu5zm6NiHduRZYKL5CioITeJ/p6+IfpnpR
eqwewqe/Hh2MjW0o+4ekunY3juQpaem8cqsnOK4YQeC3S1Kl9R
1VLM5/6sPn3OHhzaskj2Yi0+8efdsadas 6GHAmBlvmDqfL+/pmk6P91olmwL722
TTPRCyV27/s/sf0MqKdq7BTxAzCYJrjDZFpDkmd76MZPyGL1
-----END CERTIFICATE REQUEST-----

IMPORTANTE: Salve o wallet após geração do CSR. 

JKS: keytool -certreq -alias mydomain -keystore keystore.jks -file mydomain.csr

--
Neste ponto deves fornecer/enviar o CSR para o orgão que reconhecerá como válido o domínio. 
--

sleep 86400

--
Receberás do cliente/órgão emissor algo como um arquivo '.crt' ou '.cer' ou simplesmente um código  como  o abaixo:

-----BEGIN CERTIFICATE-----
MIIGIjCCBQqgAwIBAgIQeK9MIpw02HcKrZZosnv5NTANBgkqhkiG9w0BAQsFADB+
MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAd
BgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxLzAtBgNVBAMTJlN5bWFudGVj
IENsYXNzIDMgU2VjdXJlIFNlcnZlciBDQdsadsSAtIEc0MB4XDTE2MDMzMTAwMDA
DTE3MDQyMDIzNTk1OVowgaQxCzAJBgNVBAYTAkJSMRowGAYDVQQIExFSaW8gR3Jh
bmRlIGRvIFN1bDEPMA0GA1UEBxQGQ0FOT0FTMTIwMAYDVQQKFClVTklGRVJUSUwg
VU5JVkVSU0FMIERFIEZFUlRJTElaQU5URVMgTFREQTESMBAGA1UECxQJVW5pZmVy
dGlsMSAwHgYDVQQDFBdwb3J0YWwudW5pZmVydGlsdsadLmNvbS5icjCCASIwDQYJ
hvcNAQEBBQADggEPADCC+wW9EM4v1O5+oWSD/9nomr3dasJ+nk49SdkxDhp/vqok
Z5+GI+eeoPUInkdRKiXXOZ+MBodsaw/3hWnTcbKOmPPn0hRJ/EAWakCAwEAAaOCA
ggJvMCIGA1UdEQQbMBmCF3BvcnRhbC51bmlmZXJ0aWwuY29tLmJyMAkGA1UdEwQC
AaNBLv1VkpnI2SLe5tFXJfriZsOX5CMrEvdvlbSLd1VTSme+WTjhu8NtE22AEhRQ
qaZCqnUZ29E7FXxpKKVit70SqUGZfIYAPNm4Ml0pyrAz8WyAjSemJtY0khxM0MiK
DHimjPgwCV4wFZTeB3dKaw9TJmoOJw0MUXIy6D+1QitVk4+MIYcCy3xm7U5GER0m
+wW9EM4v1O5+oWSD/9nomr3dasJ+nk49SdkxDhp/vqok6/Xf7O5j20pRhlXQSw9u
Z5+GI+eeoPUInkdRKiXXOZ+MBodsaw/3hWnTcbKOmPPn0hRJ/EAWakCAwEAAaOCA
ggJvMCIGA1UdEQQbMBmCF3BvcnRhbC51bmlmZXJ0aWwuY29tLmJyMAkGA1UdEwQC
MAAwDgYDVR0PAQH/BAasdasJsMGEGA1UdIARaMFgwVgYGZ4EMAQICMEwwIwYIKwY
AgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUFBwICMBkMF2h0dHBz
Oi8vZC5zeW1jYiasdasda5jb20vcnBhMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrB
AjAfBgNVHSMEGDAWgBRfYM9hkFXfhEMUimAqsvV69EMY7zBXBggrBgEFBQcBAQRL
MEkwHwYIKwYBBQUHMAGGE2h0dHA6Ly9zcy5zeW1jZC5jb20wJgYIKwYBBQUHMAKG
Gmh0dHA6Ly9zcy5zeW1jYi5jb20vc3MuY3J0MIIBAwYKKwYBBAHWeQIEAgSB9ASB
8QDvAHUA3esdK3oNT6Ygi4GtgWhwfi6OnQHVXIiNPRHEzbbsvswAAAFTzjm5uQAA
BAMARjBEAiBw13s1hnQfKonABcDaZfJ0qST4ImqCf7U69Vo4rQ+zOwIgcYtcXJtw
Ei/7WhgSI/TGNsmMeUeGkFsVN3eGx8L64DYAdgCkuQmQtBhYFIe7E6LMZ3AKPDWY
BPkb37jjd80OyA3cEAAAAVPOObn3AAAEAwBHMEUCIQDEWv/npRY4UMb0K9f5zinR
mVK8smCIL+iHC391/0H4rQIgerQEcEzzhCOKinU5TvEcbubxCdFQwdvddCdNWAAL
yM8wDQYJKoZIhvcNAQELBQADggEBAEnAk1TQJR2i51KZkpno43SG0HN9te7djqAt
X/Jm6/VjIRSqE6or57/ou5tsIDI4IMmRYdAcHifBeVUFdG69ds5D+yzhTTNMZkKD
30FZtgxbp0tWP8wbfq3ZnrMHY7VmVOp/efv3MuhKqH2LPI8SIvHjoKkvDP7MJPbv
tZb/b6ssaTgx+GAcNmP3vSwq8CfO8rn6ohHrS8fOXwzmfHQ926owdbPJcRejuRSr
VHSBue/RkgaE+mEeb2XBlVjYqxoirNeOiRVsQKUjw7IQs9Op/ipjXsxFeY/g0nTL
JuN+sfGVSTPZ0Q4KSEFsUEEAOVk/sypMPvSnt2+23Ct9IB4Tktg=
-----END CERTIFICATE-----

--

Importando o novo certificado

OWM: Clique com o o botão direito sobre o certificado que está como requested e após clique em 'Import certificate', se arquivo envie o arquivo ao wallet, se em plaintext cole o conteúdo enviado pelo cliente/órgão emissor. Feito isto importe o mesmo certificado como trustedCA abaixo. Remova os certificados antigos e que expiraram ou vão. Reinicie seu webserver/servidor de aplicação.

JKS: Se for o caso, transforme o texto recebido em um arquivo .crt;

keytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore keystore.jks
keytool -import -trustcacerts -alias root -file Thawte.crt -keystore keystore.jks

Ajustando o alias ou recriando um JKS utilizando um wallet

Para alguns servidores de aplicação é necessário informar o nome do alias, no caso do wallet isto é obtido automaticamente, logo não se preocupe. Mas para o JKS tenha a atenção de remover os alias do certificado anterior e depois importar os novos. Use a mesma referência ou se tiveres um wallet disponível, use o comando abaixo:

orapki wallet pkcs12_to_jks -wallet mywallet.p12 -pwd mypwd -jksKeyStoreLoc myidentity.jks -jksKeyStorepwd mypwd -jksTrustStoreLoc mytrust.jks -jksTrustStorepwd mypwd

Onde temos 3 tipos de senha, do Wallet, do identity do JKS e do trust. Com isso converterá seu wallet em JKS

Exclusão de alias no JKS: keytool -delete -alias mydomain -keystore keystore.jks

Links de apoio

https://www.sslshopper.com/article-most-common-java-keytool-keystore-commands.html
https://docs.oracle.com/cd/E29542_01/core.1111/e10105/wallets.htm