내 모든 Apache 구성 단계(새로 설치):

내 모든 Apache 구성 단계(새로 설치):

모든 트래픽을 www 하위 도메인으로 리디렉션하고 모든 http 요청을 https 요청으로 리디렉션하도록 웹사이트를 구성하려고 합니다. 모든 것을 다시 설치한 약 일주일 전까지 구성이 완벽하게 작동했기 때문에 DNS 레코드(www 및 클라우드에 대한 A 레코드 포함)에 문제가 없다는 것을 알고 있습니다. 경험한 문제는 그것이 매우 펑키하게 행동한다는 것입니다.

(게시물 정리를 위해 도메인을 "example.com"으로 교체했습니다.)

작동하지 않는 것:

http://example.com        - redirects to https://www.example.com,
                            but yields SSL_PROTOCOL_ERROR
http://cloud.example.com  - redirects to https://www.example.com/myfiles/,
                            but yields SSL_PROTOCOL_ERROR
https://example.com       - no redirect to www, and yields SSL_PROTOCOL_ERROR
https://www.example.com   - yields SSL_PROTOCOL_ERROR
https://cloud.example.com - no redirect to www, and yields SSL_PROTOCOL_ERROR

작동하는 것:

http://www.example.com - works like a dream

내 모든 Apache 구성 단계(새로 설치):

sudo echo -e "\\ndeb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list

sudo apt-get update && sudo apt-get -y upgrade

# Because you'll want the latest certbot...
sudo apt-get -y install python-certbot-apache -t jessie-backports

sudo apt-get -y install apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql php5-cli

sudo a2enmod rewrite

/etc/apache2/apache2.conf 끝에 다음을 루트로 입력합니다.

ServerName example.com

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://www.example.com/
</VirtualHost>
<Directory /var/www/(.*)>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Directory>

VirtualHost 및 인증서 생성

sudo tee /etc/apache2/sites-available/www.conf << "EOP"
<VirtualHost *:80>
  ServerName www.example.com
  Redirect / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
  DocumentRoot /var/www/html/
  ServerName www.example.com
</VirtualHost>
EOP

sudo a2ensite www

sudo service apache2 restart

sudo certbot --apache --domain www.example.com
#I apply this to /etc/apache2/sites/enabled/default-ssl.conf

sudo mkdir -p /var/www/html/myfiles/

sudo tee /etc/apache2/sites-available/cloud.conf << "EOP"
<VirtualHost *:80>
  ServerName cloud.example.com
  Redirect / https://www.example.com/myfiles/
</VirtualHost>
<VirtualHost *:443>
  ServerName cloud.example.com
  Redirect / https://www.example.com/myfiles/
</VirtualHost>
EOP

sudo a2ensite cloud

sudo service apache2 restart

sudo apache2ctl configtest #which reports everything's ok

서버에 대한 추가 정보:

서버는 Debian 8.6(amd64)을 새로 설치했으며 Apache 버전 번호는 2.4이므로 소프트웨어의 안정성에는 문제가 없습니다.

내 SSL 문제

A는 cat /var/log/apache2/error.log나에게 다음과 같은 메시지를 던졌습니다.

[ssl:warn] [pid 11737] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name

답변1

인증서는 도메인 이름과 일치해야 합니다.

sudo certbot --apache --domain www.example.com --domain cloud.example.com --domain example.com

LE 인증서당 최대 100개의 SAN(주체 대체 이름)을 가질 수 있습니다.

SNI와 동일한 IP로 여러 인증서를 사용할 수도 있습니다(openssl 버전이 지원해야 함).

또한 SSL 옵션과 파일을 나열해야 합니다.</VirtualHost>

https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-14-04

관련 정보