Назад | Перейти на главную страницу

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

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

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

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. С помощью ssl.crt поскольку это недостаточно, вы должны объединить ssl.crt + промежуточные ЦС + корневой ЦС (в этом порядке) в один файл и использовать этот файл в 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   VERIFIED $ssl_client_verify;
    fastcgi_param   DN $ssl_client_s_dn;
    ...