如何确定端口 443 已被使用的原因?

如何确定端口 443 已被使用的原因?

我在 Windows 7 机器上运行 Apache 2.4.10,并尝试添加 SSL 连接。端口 80 连接工作正常,我正在尝试添加端口 443。添加 httpd.conf 后,Listen 443它无法启动:

c:\Apache24\bin> httpd.exe -k start
(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted.  : AH00072: make_sock: could not bind to address [::]:443
(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted.  : AH00072: make_sock: could not bind to address 0.0.0.0:443
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs

最初使用 进行的检查netstat显示 Chrome 使用端口 443,因此我退出 Chrome,并且在超时之后,使用 进行的端口现在为空,但是当存在netstat时服务器仍然无法启动:Listen 443

c:\Apache24\bin> netstat -ano | grep 443

我如何确定谁已经在端口 443 上并阻止 Apache 服务器使用该端口?

答案1

该问题似乎是由于 Apache 与自身发生冲突,因为存在两个Listen 443指令,一个是我添加的,另一个是通过 include 添加的:

<IfModule ssl_module>
#Include conf/extra/httpd-ssl.conf
Include conf/extra/httpd-sni.conf
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

其中conf/extra/httpd-ssl.conf出现了矛盾的一句话:

Listen 443 https

删除Listen 443I 添加的项解决了该问题。

答案2

c:\Apache24\bin> netstat -ano | grep 443

将列出所有 processId 绑定 443,例如:

 TCP    xxx:xxx     xxx:443      ESTABLISHED     4332
 TCP    xxx:xxx     xxx:443      ESTABLISHED     7164

然后执行:

c:\Apache24\bin> 任务列表 | grep -e “4332” -e “7164”

将根据 ID 列出所有进程,例如:

MyPopo.exe                    4332 Console                    1     87,424 K
firefox.exe                   7164 Console                    1    522,576 K

答案3

sysinternals 的 Tcpview 显示所有与网络相关的内容,包括哪个程序正在使用端口:

http://live.sysinternals.com

答案4

解决问题的程序:

  1. 将 ssl.conf 文件重命名为 ssl.conf.bak
  2. 启动 httpd

相关内容