- 6 ответов
- Установка начального сертификата
- Обновления сертификатов
- Сабайон
- Adding ssl certificate to your heroku application
- How to install an ssl certificate on heroku – helpdesk |
- Step 1: purchase ssl certificate
- Step 3: provision the heroku add-on
- Step 4: upload the key and certificate to heroku
- Step 5: update your dns settings
6 ответов
Лучший ответ
Я прочитал сообщение в блоге в первом ответе здесь, но я не хотел загрязнять свою кодовую базу URL-адресами и логикой ACME. Итак, я сделал нечто подобное, но использовал проверку домена DNS …
С помощью certbot укажите DNS в качестве предпочтительной задачи:
sudo certbot certonly --manual --preferred-challenges dns
После нескольких запросов certbot скажет вам развернуть запись DNS TXT для проверки вашего домена:
Please deploy a DNS TXT record under the name
_acme-challenge.www.codesy.io with the following value:
CxYdvM...5WvXR0
Once this is deployed,
Press ENTER to continue
У вашего регистратора домена, вероятно, есть собственная документация для развертывания записи TXT. Сделайте это, вернитесь к certbot и нажмите ENTER – Let’s Encrypt проверит запись TXT, подпишет сертификат, и certbot сохранит его для загрузки в heroku.
Подробнее см. в моем сообщении в блоге.
Вот две функции bash, которые можно использовать для автоматизации процесса за вас
function makessl {
sudo certbot certonly --manual --rsa-key-size 4096 --preferred-challenges dns -d ${1}
sudo heroku certs:add --type=sni /etc/letsencrypt/live/${1}/fullchain.pem /etc/letsencrypt/live/${1}/privkey.pem
}
function renewssl {
sudo certbot certonly --manual --rsa-key-size 4096 --preferred-challenges dns -d ${1}
sudo heroku certs:update /etc/letsencrypt/live/${1}/fullchain.pem /etc/letsencrypt/live/${1}/privkey.pem
}
Они принимают аргумент для имени домена, и пока вы запускаете их из своего heroku app folder, вам не нужно указывать --app NAME
Пример: makessl www.domain.com
Пример: renewssl www.domain.com
Объедините это @Eric, и все готово:
heroku certs:auto:enable
Он был написан до того, как Heroku реализовала встроенную поддержку LetsEncrypt. Остальное оставим потомкам, но в этом уже нет необходимости. Используйте @ ответ Эрика прямо сейчас.
Установка начального сертификата
Вы можете использовать certbot в ручном режиме для генерации ответа на запрос, изменить свой сайт, чтобы он возвращал этот ответ, а затем, наконец, завершить ручной процесс certbot.
См. этот блог сообщение Дэниела Моррисона или связанный ответ в разделе «Обновления сертификатов» ниже для получения дополнительных сведений.
Обновления сертификатов
Как упоминалось в @Flimm и как указано в связанной публикации блога, вам придется обновлять это каждые 3 месяца, пока Heroku не обеспечит лучшую поддержку LetsEncrypt. Вы можете сделать этот процесс более плавным (без изменения кода для загрузки), используя переменную среды, как описано в этом ответе (Node / Express, но концепции те же): https://my-sertif.ru/a/40199581/37168
Сабайон
Существует проект GitHub, который может автоматизировать все это за вас, задав переменные среды Heroku. Это крошечное веб-приложение, которое вы устанавливаете как другое приложение Heroku, которое, в свою очередь, настраивает ваше основное приложение. Я еще не пробовал, но планирую использовать его вместо обновления сертификата в следующий раз: https: // github .com / dmathieu / sabayon
Adding ssl certificate to your heroku application
To use SSL for an app hosted on Heroku, you’ll need to enable SSL add-on that Heroku provides. This add-on costs $20/month. Please keep in mind that this is a recurring expense and it does not include the cost of the SSL certificate itself. You’ll need to buy that separately.
How to install an ssl certificate on heroku – helpdesk |
In order to install a certificate on Heroku, you need to have the following files:
It is worth saying that you need to purchase the SSL Endpoint for your application at Heroku, which costs $20/month.
Also, you can have a free certificate installed using the Heroku SSL option.
For this to be done, please use the following command: heroku certs:add example.crt example.key.
After that, DNS settings for each domain should be updated on your app accordingly.
* You also need to use the flag –type sni if your app already has the SSL Endpoint add-on enabled to migrate to the free option.
Note: The reissued or renewed certificate can be updated on the application using the following command: heroku certs:update server.crt server.key
(the server.crt and server.key should be the new certificate and new Key).
In order to install your certificate, feel free to follow such steps:
1. Create SSL Endpoint by running the following command in the terminal of your local environment:
$ heroku addons:create ssl:endpoint
2. Upload the .crt file into the same SSL directory for your application and combine the main certificate and CA bundle into one separate file using the command:
$ cat example.crt bundle.crt > server.crt
3. Import the certificate and private key to the endpoint with the following command:
$ heroku certs:add server.crt server.key
You will see the details of the certificate and hostname assigned to your SSL endpoint in the output:
Adding SSL Endpoint to example… done
example now served by example-2121.herokumy-sertif.ru.
Certificate details:
Expires on:
Issuer:
Starts at:
Note: It may take up to 30 minutes (or as long as 2 hours, in rare cases) for the endpoint to be created.
4. Once it is done, you need to direct requests for your secured domain to the endpoint hostname. If the domain is not added to the app yet, you can do it with the following command:
$ heroku domains:add www.example.com
Adding www.example.com to example… done
To direct requests to the endpoint hostname, create a CNAME record:
Record type Name Target
CNAME www example-2121.herokumy-sertif.ru
Similar record for Wildcard certificates:
Record type Name Target
CNAME * example-2121.herokumy-sertif.ru
Setting a CNAME record for the root domain (@) will overwrite all the other records set up for the domain. For this reason, you’ll need your certificate to cover the subdomain (www.example.com, sub.example.com, *.example.com) so that you are able to create a CNAME for the subdomain.
It is possible to use a certificate issued for the bare domain (example.com) ONLY if you use a DNS provider that supplies a CNAME-like functionality at the zone apex.
Once all the mentioned steps are done, the certificate is installed and working via HTTPS.
To check if the certificate was installed correctly, use any of these checkers:
Step 1: purchase ssl certificate
We bought a RapidSSL certificate from Namecheap.
Step 3: provision the heroku add-on
Now you need to provision Heroku’s add-on. Open up your terminal and cd to your project directory. Then give this command –
heroku addons:add ssl:endpoint
Step 4: upload the key and certificate to heroku
Now add the certificate and private key to Heroku
heroku certs:add server.crt server.key
Here the server.crt file is the certificate we created in the last step and server.key is the private key we generated in Step 1.
If everything worked as it should, you’ll see a screen like
Step 5: update your dns settings
Login to your domain management panel.
