AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 588535
Accepted
Don Rhummy
Don Rhummy
Asked: 2014-04-12 16:04:48 +0800 CST2014-04-12 16:04:48 +0800 CST 2014-04-12 16:04:48 +0800 CST

如何在没有虚拟主机的情况下将 SSL/443 添加到 Apache 服务器?

  • 772

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

apache-2.2
  • 3 3 个回答
  • 21343 Views

3 个回答

  • Voted
  1. Best Answer
    Don Rhummy
    2014-04-12T17:02:09+08:002014-04-12T17:02:09+08:00

    默认情况下,在 CentOS 中,Apache/httpd 使用的文件位于/etc/httpd/conf.d/ssl.conf. 该文件作为 Apache 的配置与“httpd.conf”文件一起读入,其中的任何内容都优先于httpd.conf.

    该文件(同样默认情况下)包含一个Listen 443指令。您不能两次调用该指令(因为它会说它已经绑定到该端口),因此导致了冲突。删除后,它可以工作。

    • 7
  2. maulinglawns
    2017-04-13T06:49:09+08:002017-04-13T06:49:09+08:00

    如果有人在 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)
    
    • 1
  3. djdomi
    2021-08-11T00:43:43+08:002021-08-11T00:43:43+08:00

    基于 Debian 系统或通常基于其他系统

    创造

    • /etc/apache2/conf-available/default-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)
    

    这对我很有效。

    • 0

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve