Debian

Apache 沒有監聽 443 埠

  • June 27, 2016

我已經購買了 SSL,我正在嘗試在瀏覽器上設置它。該埠在路由器中轉發到伺服器,並且我相信 SSL 證書已正確安裝(apache 啟動正常)。

我在 IPtables 防火牆中打開了該埠,但是當我列出監聽的埠時 - 我沒有看到任何監聽埠 443 的內容。

我檢查了我的配置(帶 LAMP 伺服器的預設 debian 7),我的 ports.conf 文件中有以下內容:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80


<IfModule mod_ssl.c>
   # If you add NameVirtualHost *:443 here, you will also have to change
   # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
   # to <VirtualHost *:443>
   # Server Name Indication for SSL named virtual hosts is currently not
   # supported by MSIE on Windows XP.
    NameVirtualHost *:443
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   NameVirtualHost *:443
   Listen 443
</IfModule>

在啟用站點的情況下,我有一個名為 default-ssl 的文件(它很長,我只會添加主機數據,而不是整個 ssl 文件選項,除非有人認為它可以提供幫助)

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
       ServerAdmin webmaster@localhost

       DocumentRoot /var/www
       <Directory />
               Options FollowSymLinks
               AllowOverride None
       </Directory>
       <Directory /var/www/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride All
#               Order allow,deny
#               allow from all
       </Directory>

       ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
       <Directory "/usr/lib/cgi-bin">
               AllowOverride None
               Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
               Order allow,deny
               Allow from all
       </Directory>

       ErrorLog ${APACHE_LOG_DIR}/error.log

       # Possible values include: debug, info, notice, warn, error, crit,
       # alert, emerg.
       LogLevel warn

       CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

       #   SSL Engine Switch:
       #   Enable/Disable SSL for this virtual host.
       SSLEngine on


   #   A self-signed (snakeoil) certificate can be created by installing
   #   the ssl-cert package. See
   #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
   #   If both key and certificate are stored in the same file, only the
   #   SSLCertificateFile directive is needed.
   SSLCertificateFile    /etc/ssl/dev.webmark.co.il/dev_webmark_co_il.pem
   SSLCertificateKeyFile /etc/ssl/dev.webmark.co.il/dev.webmark.co.il.key

   #   Server Certificate Chain:
   #   Point SSLCertificateChainFile at a file containing the
   #   concatenation of PEM encoded CA certificates which form the
   #   certificate chain for the server certificate. Alternatively
   #   the referenced file can be the same as SSLCertificateFile
   #   when the CA certificates are directly appended to the server
   #   certificate for convinience.
   #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt

   #   Certificate Authority (CA):
   #   Set the CA certificate verification path where to find CA
   #   certificates for client authentication or alternatively one
   #   huge file containing all of them (file must be PEM encoded)
   #   Note: Inside SSLCACertificatePath you need hash symlinks
   #         to point to the certificate files. Use the provided

所以我為很長的文章道歉,只是認為這是相關資訊。

我認為 ports.conf 文件啟用了 443 上的偵聽器,但我不知道為什麼它沒有。

當我列出監聽的埠時:

netstat -a | egrep 'Proto|LISTEN'

我明白了

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 10.0.0.10:mysql         *:*                     LISTEN
tcp        0      0 *:35563                 *:*                     LISTEN
tcp        0      0 *:sunrpc                *:*                     LISTEN
tcp        0      0 localhost:61619         *:*                     LISTEN
tcp        0      0 *:61620                 *:*                     LISTEN
tcp        0      0 *:ftp                   *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 10.0.0.10:8888          *:*                     LISTEN
tcp        0      0 localhost:smtp          *:*                     LISTEN
tcp        0      0 *:27017                 *:*                     LISTEN
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:https              [::]:*                  LISTEN
tcp6       0      0 [::]:55644              [::]:*                  LISTEN
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     7400     /tmp/mongodb-27017.so                                                                                        ck
unix  2      [ ACC ]     STREAM     LISTENING     7444     /var/run/dbus/system_                                                                                        bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     7215     /var/run/rpcbind.sock
unix  2      [ ACC ]     SEQPACKET  LISTENING     3434     /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     7351     /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     7624     /var/run/mysqld/mysql                                                                                        

我很確定這個條件是真的。我希望我提供了所有相關資訊,而不是太多。感謝您花時間閱讀本文。嚴

編輯 以確保 mod_ssl 正在執行 - 我使用

apache2ctl -M

結果是:

Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
headers_module (shared)
mime_module (shared)
ssl_module (shared)
negotiation_module (shared)
php5_module (shared)
reqtimeout_module (shared)
rewrite_module (shared)
setenvif_module (shared)
status_module (shared)
Syntax OK

/編輯

埠 443 是 HTTPS。從您的netstat輸出:

tcp6       0      0 [::]:https              [::]:*                  LISTEN

很明顯,一個程序正在監聽 443 埠。要確認上面是否是 Apache (httpd) 程序,以 root 身份執行命令很重要。不推薦使用ss,而是netstat使用:

# ss -tlnp

你啟用了mod_ssl嗎?由於您正在執行 Debian,因此這是執行此操作的方法(以 root 身份執行,或通過 sudo):

a2enmod ssl

引用自:https://unix.stackexchange.com/questions/163865