我在 CentOS 上设置了一个 Apache 服务器。我正在尝试添加 SSL。我能够创建证书和密钥,然后更新/etc/httpd/conf.d/ssl.conf
为具有以下配置:
/etc/httpd/conf.d/ssl.conf
#Where I put my cert
SSLCertificateFile /etc/pki/tls/certs/ca.crt
#where I put my key
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
然后我更新了/etc/httpd/conf/httpd.conf
:
/etc/httpd/conf/httpd.conf
Listen 443
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
然后我运行service httpd restart
并收到错误:
Stopping httpd: [OK]
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:443
[OK]
我需要做什么才能启用 SSL?
答案1
默认情况下,在 CentOS 中,Apache/httpd 使用的文件位于/etc/httpd/conf.d/ssl.conf
。此文件与“httpd.conf”文件一起被 Apache 读入作为配置,并且其中的任何内容都优先于 中的设置httpd.conf
。
该文件(同样默认)包含一个Listen 443
指令。您不能两次调用该指令(因为它会说它已经绑定到该端口),因此这导致了冲突。删除该指令后,它就可以正常工作了。
答案2
以防万一 2017 年有人遇到这个问题......
httpd.conf
由于ssl.conf
包含了我们需要的所有指令,因此无需编辑:
# When we also provide SSL we have to listen to the
# the HTTPS port in addition.
#
Listen 443 https
...
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
当然还有证书的路径:
SSLCertificateFile /etc/pki/tls/certs/<mycert>.crt
SSLCertificateKeyFile /etc/pki/tls/private/<mykey>.key
换句话说,只需添加信息ssl.conf
并重新启动httpd
服务即可。当然,这只有在以下(最后一行)的情况下才有效:
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
...按照上面的文件说明取消注释httpd.conf
,这是默认安装。
系统信息:
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
答案3
在 Debian 基础系统上或通常在其他
创造
/etc/apache2/conf-available/默认-ssl.conf
<IfModule mod_ssl.c> SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key Listen 443 </IfModule>
如果您想使用默认页面,即 NGINX 或其他的反向代理,此功能开箱即用。
它不仅限于 VHOST。
附加信息
它不会产生错误,因为它只有在启用 Mod-SSL 时才有效。
bash:# a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
systemctl restart apache2
提醒重新启动 Apache
Bash:# lsof -i :443
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 1337 root 6u IPv6 488893 0t0 TCP *:443 (LISTEN)
apache2 13337 www-data 6u IPv6 488893 0t0 TCP *:443 (LISTEN)
apache2 133337 www-data 6u IPv4 488893 0t0 TCP *:443 (LISTEN)
这对我来说一直很有效。