Apache无法绑定:443地址用于SSL,即使端口443未使用

时间:2017-01-03 18:41:36

标签: linux apache ssl ports

我最近安装了使用openssl 1.0.2j启用SSL的Apache 2.4.20。

更新httpd.conf和httpd-ssl.conf文件并尝试在侦听端口443时启动Apache时,出现以下错误:

(13)Permission denied: -----: make_sock: could not bind to address [::]:443
(13)Permission denied: -----: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down

以下是我的配置:

的httpd.conf:

Listen 51000
#Listen 443
#Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

的httpd-ssl.conf中

Listen 443

如果我在httpd-ssl.conf文件中注释掉这一行,我的apache启动正常:

attempting to start apache
done

然而有了它,我每次都会收到套接字错误。

我以root身份运行以下命令:

netstat -tlpn | grep :443

一无所获。

lsof -i tcp:443

一无所获。

我读过某个地方只有root可以绑定到1024以下的地址,但我不知道该语句的有效性。 Apache不是以root身份运行的 - 这会是问题吗?

2 个答案:

答案 0 :(得分:1)

问题是443是特权端口,并且您尝试以非root用户身份进行侦听。

请参阅:privileged portswhy are privileged ports restricted to root

There are also ways to get non-root users to bind to privileged ports

答案 1 :(得分:0)

如果您将docker与docker-compose结合使用,

当我们使用诸如 bitnami 官方图片之类的非根容器时,就会发生这种情况。

当需要与主机网络绑定时,我们使用了 user:root network_mode:host

  apache:
    image: bitnami/apache:2.4
    container_name: "apache"
    ports:
      - 80:80
    network_mode: host
    privileged: true
    user: root
    environment:
      DOCKER_HOST: "unix:///var/run/docker.sock"
    env_file:
      - .env
    volumes:
      - ./setup/apache/httpd.conf:/opt/bitnami/apache/conf/httpd.conf

希望有帮助!