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!
На самом деле это возможно, и решение следующее:
Перейдите в новую папку и выполните:
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
Это укажет веб-серверу на новый сертификат (полная цепочка) при использовании старого закрытого ключа.
Оригинальное обсуждение и решение были размещены здесь .