HTTPS на примере Apache2 (методическое пособие) — различия между версиями

Материал из wiki
Перейти к: навигация, поиск
(SSL сертификат)
(SSL сертификат)
Строка 28: Строка 28:
 
</code>
 
</code>
  
root@model-net-ctrl-1:~/ssltest# ls -l
+
В текущем каталоге будут созданы файл сертификат и файл ключ. На файл ключа необходимо поставить доступ только на чтение и только пользователю, который будет шифровать.
total 8
+
 
 +
<code>
 
-rw-r--r-- 1 root root 1424 Feb 26 12:23 web_cert.pem
 
-rw-r--r-- 1 root root 1424 Feb 26 12:23 web_cert.pem
 
-rw-r--r-- 1 root root 1704 Feb 26 12:23 web_key.pem
 
-rw-r--r-- 1 root root 1704 Feb 26 12:23 web_key.pem
 
root@model-net-ctrl-1:~/ssltest# chmod 0400 web_key.pem
 
root@model-net-ctrl-1:~/ssltest# chmod 0400 web_key.pem
 +
</code>
  
 +
Проверить параметры сертификата можно следующей командой
 +
<code>
 
root@model-net-ctrl-1:~/ssltest# openssl x509 -in ./web_cert.pem -noout -text
 
root@model-net-ctrl-1:~/ssltest# openssl x509 -in ./web_cert.pem -noout -text
 
Certificate:
 
Certificate:
Строка 40: Строка 44:
 
         Serial Number: 9676869248984892495 (0x864b254fcba5444f)
 
         Serial Number: 9676869248984892495 (0x864b254fcba5444f)
 
     Signature Algorithm: sha1WithRSAEncryption
 
     Signature Algorithm: sha1WithRSAEncryption
         Issuer: C=RU, ST=Permsky Krai, L=Perm, O=PSNRU, OU=KOIBAS, CN=www.model.local/emailAddress=vim@psu.ru
+
         Issuer: C=RU, ST=Permsky Krai, L=Perm, O=PSNRU, OU=KOIBAS, CN=www.model.local/emailAddress=ru@ru.ru
 
         Validity
 
         Validity
 
             Not Before: Feb 26 06:49:43 2014 GMT
 
             Not Before: Feb 26 06:49:43 2014 GMT
 
             Not After : Dec 16 06:49:43 2016 GMT
 
             Not After : Dec 16 06:49:43 2016 GMT
         Subject: C=RU, ST=Permsky Krai, L=Perm, O=PSNRU, OU=KOIBAS, CN=www.model.local/emailAddress=vim@psu.ru
+
         Subject: C=RU, ST=Permsky Krai, L=Perm, O=PSNRU, OU=KOIBAS, CN=www.model.local/emailAddress=ru@ru.ru
 
         Subject Public Key Info:
 
         Subject Public Key Info:
 
             Public Key Algorithm: rsaEncryption
 
             Public Key Algorithm: rsaEncryption
Строка 50: Строка 54:
 
                 Modulus:
 
                 Modulus:
 
                     00:b6:39:4e:10:41:b4:e8:b1:17:87:e0:3f:61:3f:
 
                     00:b6:39:4e:10:41:b4:e8:b1:17:87:e0:3f:61:3f:
                    55:41:c8:cd:fc:17:70:d5:42:3b:3a:3a:51:a0:21:
 
                    60:46:af:f9:66:43:c8:ff:de:9b:a6:4b:d9:d4:c4:
 
                    db:ca:f4:36:03:05:52:c3:fc:8f:f7:57:d0:6e:fb:
 
                    e3:7e:51:98:9a:c6:1e:6c:07:4b:d9:ef:56:52:38:
 
                    53:3f:54:12:af:f1:be:8e:62:a4:7e:97:cd:98:d8:
 
                    89:14:10:6a:f2:99:a1:4c:1e:fe:77:57:81:c1:a6:
 
                    23:71:40:14:0b:80:1e:07:bc:62:55:ba:d4:b4:13:
 
                    48:24:a5:35:a8:74:33:16:41:6f:69:15:af:cc:75:
 
                    d8:c2:85:04:0c:ce:b6:59:1e:5a:99:9f:ca:be:87:
 
                    10:27:95:53:c2:94:12:a8:4a:89:13:0c:62:3b:1f:
 
                    c6:b8:48:5b:72:17:ee:f5:57:ba:4d:4c:69:a9:0a:
 
                    2e:28:63:e4:91:13:e1:93:5e:ba:b6:9e:f8:06:37:
 
                    be:50:0b:19:c6:80:2c:49:42:e1:f8:7b:50:b8:0d:
 
                    71:0d:16:56:36:90:d6:7b:66:0f:99:c6:98:1c:11:
 
                    8d:68:f5:6a:38:80:26:be:dc:1b:d0:2d:52:63:d8:
 
                    d2:ce:f7:4b:55:2a:70:87:90:1e:44:f4:2d:23:ba:
 
                    8d:c1
 
                Exponent: 65537 (0x10001)
 
 
         X509v3 extensions:
 
         X509v3 extensions:
 
             X509v3 Subject Key Identifier:
 
             X509v3 Subject Key Identifier:
Строка 73: Строка 59:
 
             X509v3 Authority Key Identifier:
 
             X509v3 Authority Key Identifier:
 
                 keyid:FC:42:EF:CE:C0:B8:33:19:1A:AE:48:12:76:AD:E8:4D:75:A2:B0:2D
 
                 keyid:FC:42:EF:CE:C0:B8:33:19:1A:AE:48:12:76:AD:E8:4D:75:A2:B0:2D
 
 
             X509v3 Basic Constraints:
 
             X509v3 Basic Constraints:
 
                 CA:TRUE
 
                 CA:TRUE
 
     Signature Algorithm: sha1WithRSAEncryption
 
     Signature Algorithm: sha1WithRSAEncryption
 
         6f:19:9e:f1:11:bc:fe:2d:3a:05:01:a3:5c:e3:97:03:e3:e7:
 
         6f:19:9e:f1:11:bc:fe:2d:3a:05:01:a3:5c:e3:97:03:e3:e7:
        4c:62:d1:5e:21:22:92:d6:54:e5:20:82:02:2b:26:a7:8b:f5:
+
</code>
        72:17:4e:75:3b:ee:e0:76:6f:51:f2:b5:f2:90:d5:ff:13:0c:
+
Как видим, subject и issuer совпадают, поле CA=TRUE, значит это самоподписанный корневой сертификат.
        28:dc:8b:c4:27:e4:63:11:7e:dc:cc:83:cc:ae:5a:11:c5:b8:
 
        fe:4a:a9:cb:58:4c:20:8d:6c:ab:0e:7f:09:78:c4:3d:9c:09:
 
        36:ab:25:25:7d:7d:e4:1e:8a:2b:32:ba:44:60:76:cb:ca:66:
 
        9c:46:cb:02:bd:f7:f1:ef:4e:6e:42:4a:c7:6d:cd:4f:66:d8:
 
        08:cc:af:45:0d:e4:03:db:d6:c9:bb:0d:65:75:f1:2e:d0:c4:
 
        74:bc:ad:9a:cb:d9:e1:d3:d1:d1:30:2a:71:f6:58:d9:a0:78:
 
        9e:cb:4f:f7:ba:b1:2b:36:15:e4:1e:b9:f5:4a:f0:78:16:42:
 
        03:b3:d6:49:00:e0:69:a2:9d:7f:e9:2c:e2:d2:c4:7b:aa:c6:
 
        5c:32:c4:bf:65:0f:d4:76:52:d2:86:2b:9f:8b:92:98:38:19:
 
        a5:27:80:07:23:04:d3:8d:e2:85:be:3c:b3:55:ed:aa:ca:e7:
 
        9f:35:73:90:22:fd:da:2f:75:e7:c8:27:11:4b:46:d5:ff:01:
 
        e8:80:09:a8
 
  
 +
== Apache2 ==
  
apt-get update
+
По-умолчанию шаблон конфигурации сайта для SSL лежит в /etc/apache2/sites-available/default-ssl.
aptitude install apache2
+
Корневой каталог сайта /var/www.
tweak your site /var/www
+
 
 +
Для запуска SSL необходимо включить соответствующий модуль.
 +
<code>
 
a2enmod ssl
 
a2enmod ssl
change SSLCert path in /etc/apache2/sites-available/sitest-available default-ssl
+
</code>
 +
 
 +
Теперь в конфигурации сайта (/etc/apache2/sites-available/default-ssl) указываем путь к сертификату и закрытому ключу
 +
<code>
 
         SSLCertificateFile    /etc/apache2/ssltest/web_cert.pem
 
         SSLCertificateFile    /etc/apache2/ssltest/web_cert.pem
 
         SSLCertificateKeyFile /etc/apache2/ssltest/web_key.pem
 
         SSLCertificateKeyFile /etc/apache2/ssltest/web_key.pem
 +
<code>
 +
 +
Включаем наш сайт, проверяем конфиг и перезапускаем Apache2.
 +
<code>
 
a2ensite defaul-ssl
 
a2ensite defaul-ssl
 
apache2ctl configtest
 
apache2ctl configtest
 
apache2ctl restart
 
apache2ctl restart
 +
</code>
  
 
Открыть сайт
 
Открыть сайт

Версия 11:44, 26 февраля 2014

SSL сертификат

Для протокола SSL на стороне сервера нам требуется сертификат X.509 на конкретное доменное имя и соответствующий закрытый ключ. Доменное имя должно быть указано в поле Subject сертификата в графе CN. Для указания множества имен используется поле subjectAltName. Имя домена должно указываться в том виде, в каком оно используется в ссылках на сайт. В нашем примере это будет доменное имя "www.model.local".

Для внутрикорпоративного использования, в простейшем случае, нам потребуется самостоятельно создать сертификат для доменного имени.

Если сертификатов требуется несколько - разумно создать Удостоверяющий Центр, сгенерировать корневой сертификат и им подписывать сертификаты сайтов.

Если сертификат требуется один - можно создать самоподписанный сертификат для сайта сразу.

Создаем простой Самоподписанный Сертификат и ключ для доменного имени www.model.local со сроком действия 1024 дня с ключом RSA 2048 бит.

Воспользуемся пакетом openssl. Часть параметров указывается в командной строке, часть в режиме диалога, прочие параметры заданы в /etc/ssl/openssl.cnf

root@model-net-ctrl-1:~/ssltest# openssl req -x509 -nodes -days 1024 -newkey rsa:2048 -keyout web_key.pem -out web_cert.pem
Generating a 2048 bit RSA private key
writing new private key to 'web_key.pem'
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Permsky Krai
Locality Name (eg, city) []:Perm
Organization Name (eg, company) [Internet Widgits Pty Ltd]:PSNRU
Organizational Unit Name (eg, section) []:KOIBAS
Common Name (e.g. server FQDN or YOUR name) []:www.model.local
Email Address []:ru@model.local

В текущем каталоге будут созданы файл сертификат и файл ключ. На файл ключа необходимо поставить доступ только на чтение и только пользователю, который будет шифровать.

-rw-r--r-- 1 root root 1424 Feb 26 12:23 web_cert.pem
-rw-r--r-- 1 root root 1704 Feb 26 12:23 web_key.pem
root@model-net-ctrl-1:~/ssltest# chmod 0400 web_key.pem

Проверить параметры сертификата можно следующей командой

root@model-net-ctrl-1:~/ssltest# openssl x509 -in ./web_cert.pem -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 9676869248984892495 (0x864b254fcba5444f)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=RU, ST=Permsky Krai, L=Perm, O=PSNRU, OU=KOIBAS, CN=www.model.local/emailAddress=ru@ru.ru
        Validity
            Not Before: Feb 26 06:49:43 2014 GMT
            Not After : Dec 16 06:49:43 2016 GMT
        Subject: C=RU, ST=Permsky Krai, L=Perm, O=PSNRU, OU=KOIBAS, CN=www.model.local/emailAddress=ru@ru.ru
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:b6:39:4e:10:41:b4:e8:b1:17:87:e0:3f:61:3f:
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                FC:42:EF:CE:C0:B8:33:19:1A:AE:48:12:76:AD:E8:4D:75:A2:B0:2D
            X509v3 Authority Key Identifier:
                keyid:FC:42:EF:CE:C0:B8:33:19:1A:AE:48:12:76:AD:E8:4D:75:A2:B0:2D
            X509v3 Basic Constraints:
                CA:TRUE
    Signature Algorithm: sha1WithRSAEncryption
         6f:19:9e:f1:11:bc:fe:2d:3a:05:01:a3:5c:e3:97:03:e3:e7:

Как видим, subject и issuer совпадают, поле CA=TRUE, значит это самоподписанный корневой сертификат.

Apache2

По-умолчанию шаблон конфигурации сайта для SSL лежит в /etc/apache2/sites-available/default-ssl. Корневой каталог сайта /var/www.

Для запуска SSL необходимо включить соответствующий модуль.

a2enmod ssl

Теперь в конфигурации сайта (/etc/apache2/sites-available/default-ssl) указываем путь к сертификату и закрытому ключу

        SSLCertificateFile    /etc/apache2/ssltest/web_cert.pem
        SSLCertificateKeyFile /etc/apache2/ssltest/web_key.pem
<code>

Включаем наш сайт, проверяем конфиг и перезапускаем Apache2.
<code>
a2ensite defaul-ssl
apache2ctl configtest
apache2ctl restart

Открыть сайт Сохранить серт в файл Импорт в доверенные корневые Перезапуск браузера