我有一个域,我将使用test.nl。
得到的wordpress作为主域上的虚拟主机运行。 维基媒体作为虚拟主机在子域上运行:wiki.test.nl
现在我有另一个子域(vnc.test.nl),我想用自签名证书来保证VNC连接的安全。
端口被正确转发。
虚拟主机文件:
<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的错误日志中有这个logging:
[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
阅读cert的内容。 (如果不是pem
格式,则必须使用参数-inform
。)
检查你的server.crt
和你可能从CA获得的其他文件。 正确的证书必须列出vpn.test.nl
作为主题备用名称和/或CN。 (现在证书应该总是包含主题备用名称 。)
如果您testing正确的文件应该发生下列行之一:
... Subject: CN=vpn.test.nl ... X509v3 extensions: X509v3 Subject Alternative Name: DNS:vpn.test.nl ...
PS:你应该编辑你的问题,并删除你的真实域名…甚至从日志。