2017-02-20 21 views
0

Я пытаюсь установить двухстороннее SSL-соединение между сервером nginx и клиентом (браузер/почтальон). Мне интересно, нужно ли nginx доверять ключам браузера/почтальона, предполагая запросы nginx и проверять сертификаты клиента. конкретно, что следует поставить в этом разделе NginxМожно ли протестировать 2-сторонний SSL против браузеров (как клиентов)?

server { 
    listen 443; 
    ssl on; 
    ssl_certificate /etc/nginx/ssl/newcert.crt; 
    ssl_certificate_key /etc/nginx/ssl/newkey.pem; 


    ssl_session_timeout 15m; 
    ssl_protocols SSLv3 TLSv1; 
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; 
    ssl_prefer_server_ciphers on; 

    ssl_verify_client on; 
    ssl_verify_depth 2; 

    # what should be the content of that file?? 
    >>>>>> ssl_client_certificate /etc/nginx/ssl/trust/client.crt; 


} 

мне не удалось найти какую-либо информацию об этом ...

Спасибо.

ответ

0

В ssl_client_certificate директива указывает на файл, содержащий Certificate Authority, используемый для подписи клиента Certificate Request. См. this document.

Если вы используете самозаверенный полномочия сертификата для клиентских сертификатов, процедура будет что-то вроде этого:

  1. Создать самозаверяющий сертификат для использования в качестве органа сертификации. См. OpenSSL CA(1) для упрощенной схемы управления этим шагом.
  2. Создать запрос сертификата для клиента. Например:

    openssl req -newkey rsa:2048 -nodes -keyout user.key -out user.req 
    
  3. Используйте CA с шага 1, чтобы подписать запрос от шага 2, чтобы создать сертификат для клиента. См. OpenSSL CA (1) выше.

  4. Преобразуйте сертификат с шага 3 в форматированный файл PKCS №12, чтобы он мог быть импортирован клиентом. Например:

    cat user.key user.crt | openssl pkcs12 -export -out user.p12 
    
+0

мой клиент Chrome. Я предположил, что у него есть собственные клиент-сертификаты. Мне удалось установить свой сервер-самозаверяющий сертификат на хром, но это был всего лишь один способ ssl. Возможно, я пропустил что-то в вашем ответе. Могу ли я создать клиент-сертификат для хрома? Как я могу убедиться, что он использует этот сертификат при аутентификации? мой nginx скажет, что он каким-то образом его использует? – user1092867