#ssl #nginx #openssl
#ssl #nginx #openssl
Вопрос:
У меня есть базовая настройка домашнего сервера nginx, в которой я использую клиентские сертификаты для разрешения внешнего доступа. Я следовал этому руководству, чтобы настроить все, что работает должным образом:
https://gist.github.com/rkaramandi/20a04a41536f3d7e6d2f26b0b9605ab6
в итоге:
openssl genrsa -aes256 -out ca.privkey 4096
openssl req -new -x509 -days 365 -key ca.privkey -out ca.crt
openssl genrsa -aes256 -out bobs-ipad.privkey 4096
openssl req -new -out bobs-ipad.csr -key bobs-ipad.privkey
openssl x509 -req -days 365 -in bobs-ipad.csr -CA ca.crt -CAkey ca.privkey -set_serial 100 -out bobs-ipad.crt
openssl pkcs12 -export -clcerts -in bobs-ipad.crt -inkey bobs-ipad.privkey -out bobs-ipad.p12
Также openssl pkcs12 -in bobs-ipad.p12 -out bobs-ipad.pem -nodes
для создания файла pem.
И в конфигурации nginx:
ssl_client_certificate <path>/ca.crt;
# ssl_crl <path>/ca.crl;
ssl_verify_client optional;
...
location / {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
Я могу получить доступ к серверу извне, и доступ разрешают только подписанные сертификаты на клиентском компьютере.
Однако, если один из подписанных сертификатов будет скомпрометирован, мне придется заново сгенерировать центр сертификации и повторно распространить новые подписанные клиентские сертификаты. Я понимаю, что файл CRL можно использовать для отзыва сертификатов, используя ssl_crl <path to crl>;
в конфигурации nginx, но я не уверен, что сгенерирую это, используя руководство, которому я следовал.
Можно использовать команду, подобную этой openssl ca -gencrl -keyfile ca.privkey -cert ca.crt -out ca.crl
Но это зависит от файла конфигурации с индексом сертификатов, которые я считаю?
Есть ли возможность использовать команду, подобную приведенной выше, для ввода (или списка) клиентских сертификатов pem или p12 -in bobs-ipad.pem
, которые я хочу отозвать?
Если нет, возможно, мне нужно начать все сначала и создать конфигурацию с индексным файлом, чтобы затем -revoke
использовать сертификаты и повторно сгенерировать файл crl.
Заранее спасибо,
Ричард
Ответ №1:
Не похоже, что это возможно. Я нашел несколько других руководств, чтобы заставить это работать с файлом конфигурации (и создать новый центр сертификации): https://arcweb.co/securing-websites-nginx-and-client-side-certificate-authentication-linux/https://www.djouxtech.net/posts/nginx-client-certificate-authentication
/
Комментарии:
1. Извините, я пропустил это ранее, хотя на самом деле это не вопрос или проблема программирования; возможно, хотя и немного неудобно, создать базу данных OpenSSL (index.txt файл) для существующих сертификатов (сертификатов) (в том же центре сертификации), которые затем можно использовать для выдачи CRL и /или ответы OCSP; см. unix.stackexchange.com/questions/320038 /… .