How to recreate let's encrypt certificate with public key from the past?

So what we have is an invalid let's encrypt certificate, when we try to renew it, public key changes. Is there a way to preserve the old public key? Our clients have it implemented for SSL pinning purposes.

certbot certificates shows:

Certificate Name: domain.com-0001 Domains: domain.com api.domain.com beta-api.domain.com beta.domain.com demo.domain.com Expiry Date: 2018-04-16 11:58:34+00:00 (INVALID: EXPIRED, REVOKED) Certificate Path: /etc/letsencrypt/live/domain.com-0001/fullchain.pem Private Key Path: /etc/letsencrypt/live/domain.com-0001/privkey.pem

Renewal actually works, but it generates a new SHA256. Is it possible to preserve the old one? Please help, thanks!

1
задан 21 April 2018 в 12:16
1 ответ

На самом деле это возможно, и решение следующее:

Перейдите в новую папку и выполните:

sudo certbot certonly --csr / etc / letsencrypt / csr / crs- filename.pem

Эта команда сгенерирует новый действительный сертификат letsencrypt внутри этой папки.

Затем вам нужно создать полную цепочку вручную, запустив:

sudo cat filename-cert.pem filename-chain.pem> filename- полная цепочка.pem

Последний шаг указывает на этот файл внутри конфигурации Nginx (в моем случае это Nginx):

sudo nano /etc/nginx/sites-enabled/domain.com.conf

Вставьте следующие строки :

слушайте 443 ssl; ssl_certificate /home/username/letsencrypt/filename_fullchain.pem; ssl_certificate_key /etc/letsencrypt/archive/domain.com/privkey.pem включить /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

Перезапустите Nginx, запустив:

sudo service nginx restart

Это укажет веб-серверу на новый сертификат (полная цепочка) при использовании старого закрытого ключа.

Оригинальное обсуждение и решение были размещены здесь .

2
ответ дан 3 December 2019 в 20:15

Теги

Похожие вопросы