Самозаверяющий сертификат OpenSSL и apache2 для вложенного субдомена - PullRequest
4 голосов
/ 14 декабря 2011

У меня есть проблема с вложенным поддоменом и подстановочным сертификатом openssl. Возможно, это связано с тем, что тип поддоменов: site1.parisgeo.cnrs.fr или site2.parisgeo.cnrs.fr, или другой поддомен, такой как xxxx.parisgeo. cnrs.fr

Когда я создаю самозаверяющий сертификат, я ввожу CN = * .parisgeo.cnrs.fr, но кажется, что невозможно подключиться к этому сайту, например, partage.parisgeo.cnrs.fr с этой конфигурацией! Arg.

Мой виртуальный хост и мой apache2 conf работают без подстановочных знаков, поэтому проблема не в этом, я думаю:

Порт.конф

 NameVirtualHost *:443
 Listen 443

Пример моего виртуального хоста:

<VirtualHost *:443>
  ServerName partage.parisgeo.cnrs.fr
  ServerAlias www.partage.parisgeo.cnrs.Fr

  DocumentRoot /var/www/owncloud

        <Directory /var/www/owncloud>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>

   SSLEngine on

   SSLCertificateFile    /etc/ssl/parisgeo.cnrs.fr.crt
   SSLCertificateKeyFile /etc/ssl/parisgeo.cnrs.fr.key
   </VirtualHost>

Я создаю свой сертификат следующим образом (CN = * .parisgeo.cnrs.fr):

openssl genrsa -des3 -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
openssl req -newkey rsa:1024 -nodes -keyout parisgeo.cnrs.fr.key -out parisgeo.cnrs.fr.csr

openssl x509 -req -days 3650 -in parisgeo.cnrs.fr.csr -CA ca.crt -CAcreateserial  -CAkey ca.key -out parisgeo.cnrs.fr.crt

Право на мой файл ключей генерации:

-rw-r--r-- 1 root root      1424 14 déc.  11:51 ca.crt
-rw-r--r-- 1 root root      1743 14 déc.  11:50 ca.key
-rw-r--r-- 1 root root        17 14 déc.  12:13 ca.srl
-rw-r--r-- 1 root root       981 14 déc.  12:13 parisgeo.cnrs.fr.crt
-rw-r--r-- 1 root root       627 14 déc.  12:08 parisgeo.cnrs.fr.csr
-rw-r--r-- 1 root root       891 14 déc.  12:08 parisgeo.cnrs.fr.key

Когда я пытаюсь подключиться и проверить сертификат с помощью openssl:

root@xxxx:/etc/ssl# openssl s_client -connect partage.parisgeo.cnrs.fr:443 
CONNECTED(00000003)
depth=0 /C=FR/ST=IDF/L=PARIS/O=CNRS/CN=*.parisgeo.cnrs.fr
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=FR/ST=IDF/L=PARIS/O=CNRS/CN=*.parisgeo.cnrs.fr
verify return:1
---
Certificate chain
 0 s:/C=FR/ST=IDF/L=PARIS/O=CNRS/CN=*.parisgeo.cnrs.fr
   i:/C=FR/ST=IDF/L=PARIS/O=CNRS/CN=*.parisgeo.cnrs.fr
---
Server certificate
-----BEGIN CERTIFICATE-----
..... blabla .....
-----BEGIN CERTIFICATE-----
subject=/C=FR/ST=IDF/L=PARIS/O=CNRS/CN=*.parisgeo.cnrs.fr
issuer=/C=FR/ST=IDF/L=PARIS/O=CNRS/CN=*.parisgeo.cnrs.fr
---
No client certificate CA names sent
---
SSL handshake has read 1253 bytes and written 319 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 7642C70A1E358CAA5901C060A26655DE3AF0BA683C9A598BA7C4B14FF108ADD7
    Session-ID-ctx: 
    Master-Key: 65184165198498498484 6516511321584831181468469431688132138498
    Key-Arg   : None
    Start Time: 1323862629
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
closed

Ошибка Firefox при попытке подключиться к сайту:

An error occurred during a connection to partage.parisgeo.cnrs.fr.
Peer's certificate has an invalid signature.
(Error code: sec_error_bad_signature)

Если у вас есть идея помочь мне решить эту проблему .. Большое спасибо ! SR.

1 Ответ

0 голосов
/ 22 октября 2015

Я поместил инструкции в гист :

Найдите свой openssl.conf

  1. Раскомментируйте req_extensions = v3_req

req_extensions = v3_req # The extensions to add to a certificate request

Добавить subjectAltName в раздел v3_req

[ v3_req ]<br> basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names

Наконец добавьте альтернативные имена, для которых вы хотите, чтобы этот сертификат был действительным.

[alt_names] DNS.1 = yourdomain.com DNS.2 = *.yourdomain.com

Выполните следующее:

openssl genrsa -des3 -out hostname.key 2048 openssl rsa -in hostname.key -out hostname-key.pem openssl req -new -key hostname-key.pem -out hostname-request.csr openssl x509 -req -extensions v3_req -days 365 -in hostname-request.csr -signkey hostname-key.pem -out hostname-cert.pem -extfile <path to openssl.conf>

...