HTTPS на примере Apache2 (методическое пособие) — различия между версиями
Moiseevvi (обсуждение | вклад) (→SSL сертификат) |
Moiseevvi (обсуждение | вклад) (→SSL сертификат) |
||
Строка 28: | Строка 28: | ||
</code> | </code> | ||
− | + | В текущем каталоге будут созданы файл сертификат и файл ключ. На файл ключа необходимо поставить доступ только на чтение и только пользователю, который будет шифровать. | |
− | + | ||
+ | <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= | + | 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= | + | 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: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
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: | ||
− | + | </code> | |
− | + | Как видим, subject и issuer совпадают, поле CA=TRUE, значит это самоподписанный корневой сертификат. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | == Apache2 == | ||
− | + | По-умолчанию шаблон конфигурации сайта для SSL лежит в /etc/apache2/sites-available/default-ssl. | |
− | + | Корневой каталог сайта /var/www. | |
− | + | ||
+ | Для запуска SSL необходимо включить соответствующий модуль. | ||
+ | <code> | ||
a2enmod ssl | a2enmod 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
Открыть сайт Сохранить серт в файл Импорт в доверенные корневые Перезапуск браузера