Jump to content
Калькуляторы

Настройка HTTPS апач24 не получается автоматический запуск, только вручную

Имеем подопытного в виде: FreeBSD 8.4-STABLE + Apache24

Подключаем SSL в целом в стандартном, по гугловским мануалам, конфигом:

httpd.conf

 

LoadModule cache_module libexec/apache24/mod_cache.so
LoadModule cache_socache_module libexec/apache24/mod_cache_socache.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
LoadModule socache_dbm_module libexec/apache24/mod_socache_dbm.so
LoadModule socache_memcache_module libexec/apache24/mod_socache_memcache.so
LoadModule ssl_module libexec/apache24/mod_ssl.so

...
Include etc/apache24/extra/httpd-ssl.conf

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

 

s2# cat /usr/local/etc/apache24/extra/httpd-ssl.conf

#SSLRandomSeed startup file:/dev/random  512
#SSLRandomSeed startup file:/dev/urandom 512
#SSLRandomSeed connect file:/dev/random  512
#SSLRandomSeed connect file:/dev/urandom 512

Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
#SSLPassPhraseDialog |/usr/local/etc/apache24/echo
#SSLPassPhraseDialog exec:/usr/local/etc/apache24/echo

#SSLSessionCache         "dbm:/var/run/ssl_scache"
SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
SSLSessionCacheTimeout  300

<VirtualHost _default_:443>

#   General setup for the virtual host
#DocumentRoot "/usr/local/www/apache24/data"
DocumentRoot "/usr/local/www/billing"
ServerName ssl.billing-lan.net:443
ServerAdmin you@example.com
ErrorLog "/var/log/httpd-error.log"
TransferLog "/var/log/httpd-access.log"

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/usr/local/etc/apache24/server.crt"
SSLCertificateKeyFile "/usr/local/etc/apache24/server.key"
#SSLCertificateKeyFile "/usr/local/etc/apache24/server.dec.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
   SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/www/apache24/cgi-bin">
   SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd-ssl_request.log" \
         "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


</VirtualHost>
s2#

 

В этой конфигурации апач запускается:

 

s2# sh /usr/local/etc/rc.d/apache24 start

Performing sanity check on apache24 configuration:

Syntax OK

Starting apache24.

Apache/2.4.10 mod_ssl (Pass Phrase Dialog)

Some of your private key files are encrypted for security reasons.

In order to read them you have to provide the pass phrases.

 

Private key ssl.billing-lan.net:443:0 (/usr/local/etc/apache24/server.key)

Enter pass phrase:

 

OK: Pass Phrase Dialog successful.

s2#

 

После чего нормально выдаёт сертификаты на подтверждение и в целом замечаний нет.

 

Однако ребутать апач и руками прописывать ключ к сертификату не очень хочется, то я попробовал запустить его со скриптом:

SSLPassPhraseDialog builtin

заменил на

SSLPassPhraseDialog |/usr/local/etc/apache24/echo

 

Где:

 

s2# cat /usr/local/etc/apache24/echo
#!/bin/bash
/bin/echo parol
s2#

 

chmod 0755 /usr/local/etc/apache24/echo

chown www:www /usr/local/etc/apache24/echo

 

В такой конфигурации апач стартовать не желает:

 

s2# sh /usr/local/etc/rc.d/apache24 start
Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.
/usr/local/etc/rc.d/apache24: WARNING: failed to start apache24
s2#

 

В логи ничего по этому вопросу не пишет, дебаг конфига и апача результатов не принёс :(

 

Пробовал сунуть ему в конфиг decrypted key:

SSLCertificateKeyFile "/usr/local/etc/apache24/server.dec.key"

В этом случае апач запускается, сертификаты не выдаёт, но требует их, т.е. работать невозможно.

 

Соответственно полностью автоматизированный запуск апача с нормальным ecnrypted key не получился.

 

Вопрос: где я ошибся и как всё-таки запустить апач с нормальным ключом в полностью автоматизированном режиме без участия оператора?

 

В гугле ответа на этот вопрос, к сожалению, не нашёл, поэтому прошу помощи

Share this post


Link to post
Share on other sites

Это смотрели? http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#removepassphrase ? Здесь вроде бы работает через SSLPassPhraseDialog...

Edited by hsvt

Share this post


Link to post
Share on other sites

По хорошему, проще ключ декриптованый использовать. По плохому - я бы не называл скрипт "echo".

 

Ну и добавил бы в скрип вывод что-нибудь в stderr, что бы в логах посмотреть, запускается он вообще, или нет.

Edited by vop

Share this post


Link to post
Share on other sites

Это смотрели? http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#removepassphrase ? Здесь вроде бы работает через SSLPassPhraseDialog...

Смотрел конечно, пробовал и Remove the encryption и exec, как и выше написал - при Remove the encryption в браузер получаю 403 ошибку, в логах это сопровождается такой записью:

 

[Wed Dec 03 17:48:17.741670 2014] [ssl:warn] [pid 44705] AH01909: host:443:0 server certificate does NOT include an ID which matches the server name

[Wed Dec 03 17:48:17.783353 2014] [ssl:warn] [pid 44706] AH01909: host:443:0 server certificate does NOT include an ID which matches the server name

[Wed Dec 03 17:48:17.874538 2014] [mpm_prefork:notice] [pid 44706] AH00163: Apache/2.4.10 (FreeBSD) OpenSSL/1.0.1e configured -- resuming normal operations

[Wed Dec 03 17:48:17.874588 2014] [core:notice] [pid 44706] AH00094: Command line: '/usr/local/sbin/httpd -D NOHTTPACCEPT'

[Wed Dec 03 17:48:21.711142 2014] [authz_core:error] [pid 44707] [client 192.168.28.10:20172] AH01630: client denied by server configuration: /usr/local/www/billing/

 

Если же делаю через exec, то апач не стартует, но в логи пишет вот такое:

 

[Wed Dec 03 17:50:41.744678 2014] [ssl:emerg] [pid 44758] AH02580: Init: Pass phrase incorrect for key host:443:0

[Wed Dec 03 17:50:41.744934 2014] [ssl:emerg] [pid 44758] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

[Wed Dec 03 17:50:41.744954 2014] [ssl:emerg] [pid 44758] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error

[Wed Dec 03 17:50:41.744968 2014] [ssl:emerg] [pid 44758] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

[Wed Dec 03 17:50:41.744982 2014] [ssl:emerg] [pid 44758] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=RSA)

[Wed Dec 03 17:50:41.744997 2014] [ssl:emerg] [pid 44758] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib

[Wed Dec 03 17:50:41.745010 2014] [ssl:emerg] [pid 44758] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

[Wed Dec 03 17:50:41.745024 2014] [ssl:emerg] [pid 44758] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=PKCS8_PRIV_KEY_INFO)

 

Получается, что пароль, который указан в /usr/local/etc/apache24/echo апач понимает неверно? :(

 

Ну и добавил бы в скрип вывод что-нибудь в stderr, что бы в логах посмотреть, запускается он вообще, или нет.

У меня слишком слабые знания в bash, попробовал вот так: /bin/echo parol @>/var/log/httpd-access.log, но файл httpd-access.log пуст

Или надо как-то ещё?

Share this post


Link to post
Share on other sites

У меня слишком слабые знания в bash, попробовал вот так: /bin/echo parol @>/var/log/httpd-access.log, но файл httpd-access.log пуст

Или надо как-то ещё?

 

Немного проще:

 

>&2 echo This is a test....

 

Ну и вопрос по существу - а в каком формате сертификат и ключ? Он должен быть в PEM формате (т.е. текстовый). Внутри должно быть что-то типа такого:

 

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDPtwTXUYgKDZmE+t4I6rKGAq+ZyMWz4PsMB9yKQpdjAC9RGNHJ
c1X4FHgu3D/96wX6hLNsqHtl3LuAoCtuCSJSBWPEtEeW09m0uMjs3wlEiGXhzUSe
6QzFh78CyN/QekoRa5aOKLDraPNaRu08cPRahHEaeqRm+EN0H51JTWAoKQIDAQAB
....
пропущено
....
WUVY53UfNSTAXxmKHG1Yi4YHb0/UyAM6I7f9LzdE53Sp0V8ZXUfAfwywDbapXljx
ZZ44PGKsVOE+DUio3c0CQQCFHtD7+l5eaSo+Uacct9CiDqsG1Urs//EBxlIyjPvq
Y99h3hG57ygN+wsGI+uTSjWFWi8lvOI8gnY6E1Fd/B8s
-----END RSA PRIVATE KEY-----

 

Ну и надо посмотреть, что бы в файле с самим сертификатом не было ключа. Или, наоборот, добавить туда ключ, что бы все было в одном файле.

Edited by vop

Share this post


Link to post
Share on other sites

Да, ключ в текстовом формате:

 

s2# cat /usr/local/etc/apache24/server.key
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,B201FD3100C5EEEE

xkAS+PsmfuXkt38KLi2lZrnakOyJ8EAvestCSDQzBL5FccfOvP4n0g6kOH0deItt
ePnu35qBXDCcX4+/r9CfTe4txjqF+COuBOe5dgpttOsJav37AZNA9/gkerUW4N8k
l2qidNVA7DqQrvyWi8k+FTsJa2oBAr9m/pgbnl5HgWPcp+sOWATADbWrg0J6TGrx
xchQZ5SFd9yCvjAvVakXI19+frU66aeYDRCRHCLxWK8zwsjHq7/MxMrCJgUtj8aJ
oY0OLwUxeDujeirb7G6GPSXILNaSABSto9gL/j9pWzCol45g+wgsZ8iAsABnucHy
eDkf2Y2B14g1eCAkJV+04gg7xhVmWYEuCeV6H2/lBfTh52GoLExu0JaP3oS4kZeF
....
пропущено
....
/sOBMA3Es5SV6ekrtxJ4jRzwMtV/lCLHivwgPZZl4+gFRgigqr54qakYJso+wrH2
UVG3w1qu5QWzIgxsjWW7hA+jtDmxyVd4RZdZKALjRygfgq36FCWU7Ql5NR+2MFlR
0P7rcI1EaKc607zgnCk5JShEZRKDhcIWr1RgLGEQoxGnP2bnls3svg==
-----END RSA PRIVATE KEY-----
s2#

 

Если в скрипте указать >&2 echo This is a test...., то куда ещё, акромя экрана, будет выведено сообщение?

Share this post


Link to post
Share on other sites

Закройте тему, я оказался конченным лохом и не проверил работу апача на http протоколе, ошибка бы там, https запустился с дешифрованного ключа без проблем.

Share this post


Link to post
Share on other sites

Замечательно, что все получилось.

 

Если в скрипте указать >&2 echo This is a test...., то куда ещё, акромя экрана, будет выведено сообщение?

 

Просто для инфы - stderr будет писаться в лог error_log. Иногда полезно для отладки.

Edited by vop

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.