Skip to content

Instantly share code, notes, and snippets.

@lucasmartins
Last active July 6, 2017 20:45
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lucasmartins/6067882 to your computer and use it in GitHub Desktop.
Save lucasmartins/6067882 to your computer and use it in GitHub Desktop.
Gerando um novo cert. SSL e atualizando no Heroku

(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 o bundle.crt
  • @staging Atualizar Heroku;
  • @production Atualizar Heroku;
  • saber o que fazer se der zica;

Gerando o CSR

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.

Enviando o CSR para 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;

Verificando o "Ownership" do domínio

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.

Baixando o CRT

filetype: .zip

Criando o bundle.crt

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.

Atualizando no Heroku

ProTips™

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.

Mão-na-massa

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...

Deu Zica! #comofaz

$ 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".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment