Останнє оновлення: | Переглянути всю документацію
Коли сертифікат більше не є безпечним для використання, ви повинні відкликати його. Це може трапитись з кількох різних причин. Наприклад, ви можете випадково поділитись особистим ключем на загальнодоступному веб-сайті; хакери можуть скопіювати особистий ключ з ваших серверів; або хакери можуть взяти тимчасовий контроль над вашими серверами або конфігурацією DNS і використовувати це для перевірки та видачі сертифіката від якого вони мають особистий ключ.
Коли ви скасовуєте сертифікат Let’s Encrypt, то Let’s Encrypt опублікує цю інформацію про скасовування Протокол стану онлайн-сертифікату(OCSP), та деякі браузери будуть перевіряти OCSP, щоб побачити чи вони можуть довіряти сертифікату. Зверніть увагу, що OCSP має деякі фундаментальні проблеми, тому не всі браузери будуть виконувати цю перевірку. І все ж таки, анулювання сертифікатів, які відповідають зламаним особистим ключам є важливою практикою, яка вимагається для Let’s Encrypt Угода передплати.
Щоб відкликати сертифікат за допомогою Let’s Encrypt, ви використовуєте ACME API, найімовірніше, через клієнт ACME, такий як Certbot. Вам потрібно буде довести Let’s Encrypt, що ви уповноважені скасувати сертифікат. Є три способи зробити це: з облікового запису, який видав сертифікат, використовуючи інший авторизований обліковий запис або використовуючи закритий ключ сертифіката.
Зазначення коду причини
При видаленні сертифікату, підписники Let’s Encrypt повинні обрати код причини таким чином:
- Причина не вказана або
не вказано
(RFC 5280 CRLReason #0)- Коли наведені нижче коди причин не застосовуються до запиту на відкликання, підписник не повинен надавати код причини, відмінний від “не вказаних”.
keyCompromise
(RFC 5280 CRLReason #1)- Підписник сертифікату повинен вибрати “keyCompromise” причини відкликання, коли він має підстави вважати, що приватний ключ його сертифіката був скомпрометований, наприклад, неавторизована людина має доступ до закритого ключа його сертифікату.
- Якщо запит на відкликання підписано за допомогою приватного ключа сертифіката, а не приватного ключа облікового запису підписника, Let’s Encrypt може ігнорувати причини відкликання у запиті й встановити причину “keyCompromise”.
замінено
(RFC 5280 CRLReason #4)- Підписнику сертифіката слід вибрати причину відкликання “замінено”, коли він запитує новий сертифікат для заміни свого чинного сертифіката.
припинення дії
(RFC 5280 CRLReason #5)- Підписнику сертифіката слід вибрати причину відкликання “cessationOfOperation”, коли він більше не володіє всіма доменними іменами в сертифікаті, або коли він більше не використовуватиме сертифікат, оскільки припиняє роботу свого вебсайту.
- Якщо запит на відкликання надійшов з облікового запису підписника, який не замовляв відповідний сертифікат, але продемонстрував контроль над усіма ідентифікаторами в сертифікаті, Let’s Encrypt може проігнорувати причину відкликання в запиті й встановити причину в “cessationOfOperation”.
Запити на відхилення, в яких зазначено будь-який інший код причини, крім зазначених вище, будуть відхилені.
З облікового запису, який видав сертифікат
Якщо вам спочатку видали сертифікат, і ви все ще маєте контроль облікового запису, який ви використовували для його оформлення, ви можете скасувати його за допомогою свого облікового запису. Certbot спробує це зробити за замовчуванням. Наприклад:
certbot revoke --cert-path /etc/letsencrypt/archive/${YOUR_DOMAIN}/cert1.pem
Використання іншого авторизованого облікового запису
Якщо хтось видав сертифікат після того, як скомпрометував ваше розміщення або DNS, вам слід відкликати цей сертифікат, щойно ви відновите контроль. Щоб відкликати сертифікат, Let’s Encrypt має переконатися, що ви контролюєте доменні імена в цьому сертифікаті (інакше кожен може відкликати сертифікати один одного без дозволу)!
Щоб перевірити цей елемент керування, Let’s Encrypt використовує ті ж методи, які він використовує для перевірки елементів видачі: ви можете помістити значення у DNS TXT-запис або розмістити файл на сервері HTTP. Як правило, клієнт ACME оброблює їх за вас. Зауважте, що більшість клієнтів ACME поєднують перевірку та видачу, тож єдиний спосіб запитати перевірку — це спроба видачі. Потім ви можете скасувати отриманий сертифікат, якщо ви цього не хочете, або просто знищити приватний ключ.
Якщо ви хочете уникнути видачі a сертифіката, ви можете включити неіснуюче ім’я домену у свій командний рядок, що призведе до помилки при видачі, коли ще перевірятиме інші, існуючі доменні імена. Наприклад:
certbot certonly --manual --preferred-challenges=dns -d ${YOUR_DOMAIN} -d nonexistent.${YOUR_DOMAIN}
І дотримуйтесь інструкцій. Якщо ви надаєте перевагу перевірці за допомогою HTTP, а не DNS, замініть прапорець --preferred-challenges
на --preferred-challenges=http
.
Після підтвердження контролю над усіма доменними іменами в сертифікаті, який бажаєте відкликати, можна завантажити сертифікати із crt.sh, і потім перейти до відкликання сертифіката так, ніби ви його видали:
certbot revoke --cert-path /PATH/TO/downloaded-cert.pem
Використання приватного ключа сертифіката
Якщо ви не видавали сертифікат, але у вас є копія відповідного приватного ключа, ви можете відкликати його, використавши цей ключ для підписання запиту на відкликання. Наприклад, якщо ви помітили, що приватний ключ випадково став загальнодоступним, ви можете використати цей метод, щоб відкликати сертифікати, які використовували цей приватний ключ, навіть якщо ви не є тим, хто їх видав.
Щоб використати цей метод, спочатку вам знадобиться копія приватного ключа в форматі PEM.
Після цього, якщо його у вас ще немає, завантажте сертифікат, який потрібно відкликати. Let’s Encrypt записує всі сертифікати до журналів Certificate Transparency, щоб можна було знаходити та завантажувати сертифікати з монітора журналу, наприклад crt.sh. Шукаючи відповідність SubjectPublicKeyInfo
(SPKI) знайде всі сертифікати, які використовують приватний ключ. Щоб витягти хеш SPKI із приватного ключа:
openssl pkey -outform DER -in /PATH/TO/privkey.pem -pubout | openssl sha256
Якщо у вас є закритий ключ і сертифікат, ви зможете відкликати цей сертифікат:
certbot revoke --cert-path /PATH/TO/cert.pem --key-path /PATH/TO/privkey.pem --reason keyCompromise