Установить безопасное соединение с nginx и сертификатом startssl

Я зарегистрировался на startssl.com и поэтому получил 4 файла для своего домена:

  • ssl.key - закрытый ключ файл
  • ssl.crt - файл сертификата
  • ca.pem - Корневой ЦС
  • sub.class1.server.ca.pem - Сертификат ЦС промежуточного сервера класса 1

, чтобы удалить пароль, который я сделал:

openssl rsa -in ssl.key -out ssl.key.nopwd

Затем я настроил свою конфигурацию nginx:

server {
    listen 443 ssl;
    ssl on;

    ssl_certificate /etc/nginx/ssl/ssl.crt;
    ssl_certificate_key /etc/nginx/ssl/ssl.key.nopwd;
    keepalive_timeout 70;
    fastcgi_param SSL_VERIFIED $ssl_client_verify;
    fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
    fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
    fastcgi_param SSL_DN $ssl_client_s_dn;

    server_name ***;
    root /var/www/***;
}

После перезапуска nginx я могу успешно войти на свой сайт через https. Но теперь я хочу обезопасить свой сайт и предоставить к нему доступ только с сертификатом, установленным в клиентском браузере. Насколько я понимаю, я должен настроить его в конфигурации nginx:

ssl_client_certificate    etc/nginx/ssl/[WHAT_SHOULD_BE_HERE?]
ssl_verify_client         on;

Но на какой файл мне указать? Как я могу сгенерировать сертификат клиента из серверного?

1
задан 27 November 2015 в 05:18
1 ответ

Пожалуйста, посмотрите этот ответ . Но вот краткая версия того, что должно произойти:

  1. Использование ssl.crt как таковое недостаточно, вам следует объединить ssl.crt + промежуточный ЦС + корневой ЦС (в этом order) в один файл и используйте этот файл в операторе ssl_certificate .

  2. Вам необходимо объединить промежуточные ЦС + корневой ЦС вашего сертификата КЛИЕНТА в один файл и добавив его в оператор ssl_client_cerificate .

  3. Необязательно, но настоятельно рекомендуется, настройте правило, какие имена субъектов сертификата клиента вам требуются (например, CN, O, OU, DC и т. д.), проанализировав $ ssl_client_s_dn переменная.

  4. Также настоятельно рекомендуется включить сшивание OSCP, объединив Промежуточный ЦС + Корневой ЦС вашего СЕРВЕРА и добавив его в оператор ssl_trusted_certificate следующим образом :

     ssl_trusted_certificate /etc/nginx/ssl/ocsp-chain.crt;
    ssl_stapling on;
    ssl_stapling_verify on;
     
  5. Вы также можете передать информацию о сертификате в ваш модуль fastcgi:

     ...
    fastcgi_param ПРОВЕРЕНО $ ssl_client_verify;
    fastcgi_param DN $ ssl_client_s_dn;
     ...
     
1
ответ дан 3 December 2019 в 23:55

Теги

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