동일한 도메인의 여러 포트에 대해 "https"를 구성하는 방법은 무엇입니까?

동일한 도메인의 여러 포트에 대해 "https"를 구성하는 방법은 무엇입니까?

웹사이트(아파치 웹 서버, 우분투 14.04) 설정이 있습니다.http://example.com그리고 포트 1996과 1980을 구성합니다.

이 링크는http

http://example.com/myproject
http://example.com:1996/
http://example.com:1980/

그런 다음 SSL 인증서를 설치하고 https.

하지만 이 링크는 작동하지 않습니다

https://example.com:1996 
https://example.com:1980

https동일한 도메인에 여러 포트를 구성하는 방법은 무엇입니까 ?

Default.conf:

<VirtualHost *:80>
               ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ServerName example.com
        SSLEngine on
        SSLCertificateFile /home/ubuntu/ssl_cert/signed_cert.crt
        SSLCertificateKeyFile /home/ubuntu/ssl_cert/server.key

</VirtualHost>

포트.conf:

Listen 80

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

답변1

편집: 사용자 설정을 디버깅하면서 netstat이미 1996/TCP를 사용하는 프로세스가 있음을 발견했습니다.

netstat -nlp | grep 1996
tcp 0 0 0.0.0.0:1996 0.0.0.0:* LISTEN 4729/python

따라서 구성 예는 1997/TCP로 변경됩니다.


Apache/ mod_ssl1997/TCP와 1980/TCP가 HTTPS 포트임을 알려주어야 합니다. 기본적으로 443/TCP가 알려져 있지만 다른 TLS 인식 TCP 포트를 구성에 추가해야 합니다.

그렇지 않으면 443/TCP가 아닌 포트는 HTTP 지원 포트로만 처리됩니다.

예를 들어 CentOS에서는 /etc/httpd/conf.d/ssl.confDebian/Ubuntu에 다음 줄을 추가 해야 합니다 /etc/apache2/ports.conf.

Listen 1997 https
Listen 1980 https

또한 해당 가상 호스트에서 포트를 정의해야 합니다.

<VirtualHost *:1997>
Servername example.com
....
</VirtualHost>

<VirtualHost *:1980>
Servername example.com
....
</VirtualHost>

이 또한 잘 알려져 있지 않습니다. 다음을 수행할 수 있습니다(예를 들어, :*443을 사용하는 가상 호스트가 아직 있는 경우 사용하지 마십시오).

<VirtualHost *:443 *:1980>
Servername example.com
....
</VirtualHost>

구성 파일을 편집한 후에는 Apache를 다시 시작해야 합니다. Debian/Ubuntu에서는 재부팅됩니다:

sudo service apache2 restart

~에서Apache - 주소 및 포트에 바인딩

Listen을 사용하여 프로토콜 지정

선택적 두 번째 프로토콜 매개변수 Listen은 대부분의 구성에 필요하지 않습니다. 지정하지 않으면 https가 포트 443의 기본값이고 http가 다른 모든 포트의 기본값입니다. 프로토콜은 요청을 처리해야 하는 모듈을 결정하고 AcceptFilter 지시문을 사용하여 프로토콜별 최적화를 적용하는 데 사용됩니다.

프로토콜 설정은 비표준 포트에서 실행할 때만 필요합니다. 예를 들어 포트 8443에서 https 사이트를 실행하는 경우:

192.170.2.1:8443 https 듣기

중요한 팁: 포트당 하나의 수신 라인/명령만 구성할 수 있습니다. 이러한 포트에 대한 Listen 지시문이 이미 있는 경우 해당 포트에 주석을 달거나 포트 앞에 https를 추가할 수 있습니다. 그렇지 않으면 Apache를 시작할 때 "주소가 이미 사용 중입니다"라는 메시지가 나타납니다..

마지막 단락에 대한 TLDR: 아마도 apache2.conf에 적어도 1996년에 대한 중복 Listen이 이미 있을 것입니다. 제거하십시오. (아니요, 실행 중인 다른 서비스에서 사용 중입니다.)

두 번째 메모:실행 중인 다른 서비스에 구성했을 수 있는 포트를 사용하지 마십시오.

관련 정보