(check the en_US version here) Gerando um novo cert. SSL e atualizando no Heroku
Para gerar um novo certificado SSL você precisa dos seguintes procedimentos:
@dev
Gerar um .CSR (é um arquivo texto com uma chave);@dev
Enviar o .CSR para a entidade certificadora (TheSSLstore);@dev
Verificar o Ownership do domínio via email (também da pra colocar um arquivo no srv. http);@dev
Baixar o .CRT (vem um zip com vários .CRT);
@dev
Criar obundle.crt
@staging
Atualizar Heroku;@production
Atualizar Heroku;- saber o que fazer se der zica;
Abra o Terminal e execute:
openssl req -new -newkey rsa:2048 -nodes -out rdstation.csr -keyout rdstation.key \
-subj "/C=BR/ST=Santa Catarina/L=Florianópolis/O=Resultados Digitais/OU=RDstation/CN=*.rdstation.com.br"
Este comando gera uma chave (rdstation.key) e um CSR (rdstation.csr), a chave deve ser compartilhada apenas com o Heroku, e o CSR com a entidade certificadora.
** Você já deve ter comprado o certificado **
- Acesse https://www.thesslstore.com/client/orders.aspx;
- Na "Order" em aberto tem um link logo em baixo do ID que te leva para o Wizard da Comodo;
- Siga o Wizard (duh!), na seção "Domain Control Validation" escolha validar por email;
Depois de enviar o CSR, você receberá um email com um link e um validation code. Acesse o link e siga as instruções, ao terminar este procedimento a validação está concluída.
- Acesse https://www.thesslstore.com/client/orders.aspx;
- Abra a "Order" referente ao processo;
- scrolldown;
- click "Download Certificate";
filetype: .zip
Ao descompactar o .zip você vai ter uma pasta com vários certificado pertencentes a cadeia da sua entidade certificadora. Pela Comodo, a pasta fica assim:
- AddTrustExternalCARoot.crt
- ComodoUTNSGCCA.crt
- EssentialSSLCA_2.crt
- STAR_rdstation_com_br.crt
- UTNAddTrustSGCCA.crt
Agora precisamos compor um arquivo com os certificados --> NA ORDEM <-- da cadeia, entre nesta pasta pelo Terminal e execute:
cat STAR_rdstation_com_br.crt EssentialSSLCA_2.crt ComodoUTNSGCCA.crt UTNAddTrustSGCCA.crt > bundle.crt
Mova o bundle.crt
para a mesma pasta da chave.
proTip™ #1
É muito importante fazer isso em @staging
antes de @production
pra ver se tudo ocorre como o esperado. É muito fácil errar o processo do bundle.crt
e o Heroku vai negar o update.
proTip™ #2
Você não pode ter a GEM heroku
instalada no seu Terminal, use o Heroku Toolbelt;
proTip™ #3
Se você nem sabe porque teria a GEM heroku
:
$ gem uninstall heroku
Select gem to uninstall:
1. heroku-2.28.0
2. heroku-2.28.12
3. All versions
> 3
Successfully uninstalled heroku-2.28.0
Remove executables:
heroku
in addition to the gem? [Yn] y
Removing heroku
Successfully uninstalled heroku-2.28.12
proTip™ #4
Se você quer ter certeza que tem o executável certo:
$ heroku --version
heroku-toolbelt/2.39.4 (x86_64-darwin10.8.0) ruby/1.9.3
proTip™ #5
Se você quer ter certeza que tem o executável errado:
$ heroku --version
heroku-gem/2.28.12 (x86_64-darwin12.3.0) ruby/2.0.0
proTip™ #6
O navegador faz cache do certificado, nada que um ⌘+R não resolva.
Pra começar, verifique os dados do certificado que está no Heroku:
$ heroku certs:info --app rdstation-staging-cedar
Entre na pasta que contém o bundle.crt
e a chave rdstation.key
e execute:
$ heroku certs:update bundle.crt rdstation.key --app rdstation-staging-cedar
Resolving trust chain... done
Updating SSL Endpoint iwate-3473.herokussl.com for rdstation-cedar... done
Updated certificate details:
Common Name(s): *.rdstation.com.br, rdstation.com.br
Expires At: 2014-07-26 23:59 UTC
Issuer: /OU=Domain Control Validated/OU=EssentialSSL Wildcard/CN=*.rdstation.com.br
Starts At: 2013-07-23 00:00 UTC
Subject: /OU=Domain Control Validated/OU=EssentialSSL Wildcard/CN=*.rdstation.com.br
SSL certificate is verified by a root authority.
Se você não leu a proTip™ #2
, vai dar zica...
$ heroku certs:rollback --app rdstation-staging-cedar
Lembre de trocar o --app
pro ambiente que PAROU de funcionar
Updating SSL Endpoint tokyo-1723.herokussl.com for rdstation-cedar... failed
! Bad response from SSL Endpoint provider. Please try again later.
Leia a proTip™ #2
, e compartilhe a sua experiência com alguém do seu lado como penitência, repita 2 vezes em voz alta: "Eu não li a proTip™ #2
".