У меня есть домен, я буду использовать, например, test.nl.
Wordpress работает как виртуальный хост в основном домене. Викимедиа работает как виртуальный хост на поддомене: wiki.test.nl
Теперь у меня есть еще один поддомен (vnc.test.nl), который я хочу защитить с помощью самоподписанного сертификата, чтобы соединение VNC было защищено.
Порты перенаправлены правильно.
Файл Virtualhost:
<VirtualHost *:80>
ServerName vnc.test.nl
Redirect permanent / https://vnc.test.nl/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName vnc.test.nl
DocumentRoot /var/www/vnc.test.nl
DirectoryIndex index.html index.php index.pl index.cgi
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
ProxyPreserveHost On
ProxyPass / http://10.0.6.4:6080/
ProxyPassReverse / http://10.0.6.4:6080/
</VirtualHost>
</IfModule>
Я использовал это руководство о том, как защитить сайт с помощью SSL. https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04
В моем браузере появляется сообщение SLL_PROTOCOL_ERROR. В журнале ошибок apache отмечается следующее:
[Tue Nov 14 13:04:05.476933 2017] [ssl:warn] [pid 2128] AH01906: vnc.test.nl:443:0 server certificate is a CA certificate (BasicConstraints: CA ==
TRUE !?)
[Tue Nov 14 13:04:05.497306 2017] [ssl:warn] [pid 2132] AH01906: vnc.test.nl:443:0 server certificate is a CA certificate (BasicConstraints: CA ==
TRUE !?)
[Tue Nov 14 13:04:05.499219 2017] [mpm_prefork:notice] [pid 2132] AH00163:
Apache/2.4.25 (Ubuntu) OpenSSL/1.0.2g configured -- resuming normal
operations
[Tue Nov 14 13:04:05.499241 2017] [core:notice] [pid 2132] AH00094: Command
line: '/usr/sbin/apache2'
Затем я попробовал CertBot, но единственное, что получил:
Server only speaks HTTP, not TLS
Даже когда я удаляю прослушивание порта 80 в файле виртуального хоста.
Как исправить ошибку протокола ssl?
Похоже, вы установили не тот файл в качестве сертификата сервера. Вы можете прочитать содержимое сертификата с помощью openssl x509 -in server.crt -text
. (Если это не в pem
формат, который вам нужно поиграть с параметром -inform
.)
Проверьте свои server.crt
и дополнительные файлы, которые вы могли получить от центра сертификации. Правильный сертификат должен указывать vpn.test.nl
так как Альтернативное имя субъекта и / или как CN. (В настоящее время сертификаты всегда должны содержать Альтернативное имя субъекта.)
Если вы проверяете правильный файл, должна появиться одна из следующих строк:
...
Subject: CN=vpn.test.nl
...
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:vpn.test.nl
...
PS: Вам следует отредактировать свой вопрос и удалить свое настоящее доменное имя ... даже из журналов.