Я только что добавил SSL-сертификат в Apache. Проблема в том, что Apache запускается при запуске системы, и после включения моего сервера Apache запускается, но не запускается. Я ввел IP-адрес моего компьютера, и мой браузер просто пытается подключиться. Я вижу вращающийся круг.
Затем я захожу на свой сервер, убиваю все процессы, связанные с Apache, и запускаю sudo service apache2 restart
. Из-за sudo
мне предлагается ввести пароль суперпользователя, но после его установки Apache запрашивает пароль для файла .key. Я вставил его, а затем Apache работает нормально. SSL даже работает.
Так почему же Apache не работает, пока я не перезапущу его? Это потому, что он хочет, чтобы я вводил пароль при каждом запуске? Если да, то как мне это сделать на моем сервере Xubuntu? Могу ли я сделать это так, чтобы мне не приходилось вставлять его каждый раз?
Кажется, что закрытый ключ для Вашего сертификата SSL защищен паролем. Чтобы протестировать, имеет ли это действительно место, исследуйте начало своего файла ключей с помощью команды head -3 your.key
. Этот закрытый ключ шифруется:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,C251E8A1254B933D763703EE1C364AB7
Этот файл не шифруется:
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAvbeWtO9nQP4cFFuhGrOM/WQ73oTQHU7mzZB9CaA3R2iwjDNz
wwlDtT9tfo0tCC2ib9STfeM6AYrdI3wauzCu7AV4CFGSMP3HLX8DJuk8zzbdQHHv
Для удаления пароля из закрытого ключа RSA используйте следующую команду:
umask 077
mv your.key old-with-pass.key
openssl rsa -in old-with-pass.key -out your.key
Эти umask 077
команда необходима, чтобы гарантировать, что новый ключ не создается с чрезмерно расслабленными полномочиями. С другой стороны, можно вручную изменить режим файла с chmod 400 new.key
. В зависимости от местоположения ключа Вам, возможно, придется снабдить префиксом openssl
, mv
и chmod
команды с sudo
.
Ответ на http://serverfault.com @JamesSneeringer.
я был виновен в удалении пароля от моих собственных файлов ключей в прошлом, потому что это - простое решение, но мудрый безопасностью, это не лучшая идея. Альтернатива должна подать пароль к Apache. Можно сделать это с
SSLPassPhraseDialog
опция в Вашемhttpd.conf
(или другой файл, который она включает)., Если бы у Вас только есть один сайт SSL на Вашем сервере, самая простая форма этого была бы:
# either of these will work SSLPassPhraseDialog |/path/to/passphrase-script SSLPassPhraseDialog exec:/path/to/passphrase-script
Вы тогда создали бы очень простой сценарий, названный
/path/to/passphrase-script
, который содержит что-то как следующее:#!/bin/sh echo "put the passphrase here"
При запуске, Apache будет брать вывод этого сценария и использовать его в качестве пароля для ключа SSL. Если у Вас есть несколько сайтов SSL,
SSLPassPhraseDialog
имеет дополнительные пути, которыми это может использоваться, таким образом, у Вас может или быть единственный сценарий для всех Ваших ключей или отдельный сценарий для каждого, или однако Вы хотите сделать это.