在 Debian 基础系统上或通常在其他

在 Debian 基础系统上或通常在其他

我在 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)

这对我来说一直很有效。

相关内容