SSL을 설정하려고 할 때 Apache 문제가 발생합니다(Debian)

SSL을 설정하려고 할 때 Apache 문제가 발생합니다(Debian)

저는 Let's Encrypt 인증서, 키 및 체인이 작동하도록 노력해 왔습니다.

하지만 나는 무엇을 해야 할지 깨닫기 전에는 할 필요가 없다고 알고 있던 일들도 했습니다.

포트 443이 열려있지 않아서 "ports.conf"로도 뭔가 했는데, 원래대로 되돌린 것 같아요.

default-ssl.conf하나를 수정 하고 만들었지 a2ensite만 정상적으로 mywebsite.com.conf작동합니다.

키 파일 경로에 오류가 있어서 수정하고 재부팅을 해보았 apache2으나, 진짜 문제는 이때부터 시작되었습니다.

하나와 두 개의 conf 파일(일반 및 SSL)을 시도했지만 a2dissite아파치를 다시 시작할 수 없습니다.

유일한 다른 점은 CSR을 만들어 인증서 파일에 추가하는 등 필요하지 않은 작업을 수행했다는 것입니다.

이것이 말하는 내용입니다:

● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2)
Drop-In: /lib/systemd/system/apache2.service.d
└─forking.conf
Active: failed (Result: exit-code) since Wed 2017-01-18 06:23:59 PST; 3min 31s ago
Process: 31878 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 31861 ExecReload=/etc/init.d/apache2 reload (code=exited, status=1/FAILURE)
Process: 30542 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)

Jan 18 06:22:10 archimedes systemd[1]: apache2.service: control process exited, code=exited status=1
Jan 18 06:22:10 archimedes systemd[1]: Reload failed for LSB: Apache2 web server.
Jan 18 06:23:37 archimedes systemd[1]: Reloading LSB: Apache2 web server.
Jan 18 06:23:38 archimedes apache2[31861]: Reloading web server: apache2 failed!
Jan 18 06:23:38 archimedes apache2[31861]: Apache2 is not running ... (warning).
Jan 18 06:23:38 archimedes systemd[1]: apache2.service: control process exited, code=exited status=1
Jan 18 06:23:38 archimedes systemd[1]: Reload failed for LSB: Apache2 web server.
Jan 18 06:23:59 archimedes apache2[31878]: Stopping web server: apache2.
Jan 18 06:23:59 archimedes systemd[1]: Unit apache2.service entered failed state.
 Jan 18 06:27:04 archimedes systemd[1]: Unit apache2.service cannot be reloaded because it is inactive.

그러다가 여기에서 또 다른 게시물을 보고 누군가가 언급해서 sudo reboot이것을 시도했는데 퍼티가 멈췄습니다. 하지만 퍼티를 다시 열었을 때 재부팅할 수 있었고 apache2이제 일반 HTTP로 돌아왔습니다.

내가 뭘 잘못하고 있는지 어떤 아이디어가 있습니까?

활성화된 사이트에 SSL을 다시 추가하는 것이 좋은가요? 이제 포트 443이 열려 있는 것 같습니다. 이는 좋은 일입니다.

편집하다: Apache2.conf...

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

그리고 "mywebsite.com.conf"...

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName mywebsite.com
    ServerAlias www.mywebsite.com
    DocumentRoot /var/www/html

    ErrorLog /var/www/logs/error.log
    CustomLog /var/www/logs/access.log combined

    <Directory /var/www/html/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            allow from all
    </Directory>

</VirtualHost>

답변1

  1. 라우터가 포트 80과 443을 허용하는지 확인하세요.

  2. 포트 80 및 443을 서버로 전달해야 합니다.

  3. 방화벽에 구멍이 뚫려 있는지 확인하세요.

    sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    
  4. 포트 443(및 80)에 대한 VirtualHost를 정의합니다.

    <VirtualHost *:80>
    
    ... your code here ...
    
    </VirtualHost>
    
    <IfModule mod_ssl.c>
    
      <VirtualHost *:443>
    
      ... your code here ...
    
      </VirtualHost>
    
    </IfModule>
    
  5. 할 수 있게 하다 mod_rewrite:

    sudo a2enmod rewrite
    
  6. 예를 들어 HTTP에서 HTTPS로의 리디렉션을 정의합니다.

    RewriteCond            %{HTTPS} !on
    RewriteRule            ^/?(.*) https://%{SERVER_NAME}/$1 [R=301]
    
  7. 마지막으로 Apache를 다시 시작하십시오.

    sudo service apache2 restart
    

관련 정보