Thousands of people around the world make our work possible. Donate today.

Відкликання сертифікатів

Останнє оновлення: | Переглянути всю документацію

Коли сертифікат більше не є безпечним для використання, ви повинні відкликати його. Це може трапитись з кількох різних причин. Наприклад, ви можете випадково поділитись особистим ключем на загальнодоступному веб-сайті; хакери можуть скопіювати особистий ключ з ваших серверів; або хакери можуть взяти тимчасовий контроль над вашими серверами або конфігурацією 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 повинні обрати код причини таким чином:

Запити на відхилення, в яких зазначено будь-який інший код причини, крім зазначених вище, будуть відхилені.

З облікового запису, який видав сертифікат

Якщо вам спочатку видали сертифікат, і ви все ще маєте контроль облікового запису, який ви використовували для його оформлення, ви можете скасувати його за допомогою свого облікового запису. 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