설치하다

설치하다

내 apache2 웹 서버에 SSL을 설정하려고 하는데 전혀 작동하지 않는 것 같습니다.

튜토리얼을 따라 openssl을 사용하여 인증서 파일을 만들고 /etc/apache2/sites-available/default-ssl.conf올바르게 구성했습니다.

https를 사용하여 웹사이트를 열려고 할 때마다 브라우저가 보안 문제로 인해 연결을 거부합니다. 내 사이트를 올바르게 구성하지 않았다고 나옵니다.

내 서버에서 /var/log/apache2/error.log내 서버 인증서에 서버 이름과 일치하는 ID가 포함되어 있지 않다는 경고가 표시됩니다.

[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/apache2'

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 주목 해 주셔서 감사합니다!

답변1

글쎄요, 최근 이 게시물이 많이 조회된 것을 보니 저와 같은 문제를 겪고 있는 분들이 많은 것 같습니다. 그렇다면 이것이 도움이 될 수 있습니다.

저는 간단한 단계별 튜토리얼을 따라 웹 서버용 SSL 인증서를 만들었습니다. 많은 튜토리얼과 마찬가지로 제가 따랐던 튜토리얼에서도 OpenSSL을 사용하여 자체 서명된 인증서가 생성되었습니다. 예자체 서명된,여기서 문제가 발생합니다. 인증서가 자체적으로 서명되었기 때문에 브라우저는 서버를 신뢰할 수 없습니다. 글쎄, 나도 할 수 없어...

인증서는 신뢰할 수 있는 외부 CA(인증 기관)에서 서명해야 합니다. 그래서 나는 우연히 발견했다.암호화하자모든 작업을 수행하고 설정이 더 쉬우며 무엇보다도 완전 무료입니다.

설치하다

1) OpenSSL을 사용하여 생성된 이전 SSL 인증서 파일을 삭제합니다.

2) Debian에서 certbot 클라이언트를 가져오려면 백포팅을 켭니다. 이렇게 하면 미완성 소프트웨어에 구멍이 생길 수 있다는 점을 명심해야 합니다! 수행 중인 작업을 알고 있는 경우에만 패키지를 설치하십시오.

echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list

3) Linux 시스템 업데이트

sudo apt-get update

4) 인증서 로봇 설치

sudo apt-get install python-certbot-apache -t jessie-backports

5) 아파치 ServerName 및 ServerAlias ​​설정

sudo nano /etc/apache2/sites-available/000-default.conf

6) 아파치 구성 파일 편집

<VirtualHost *:80>
    . . .
    ServerName example.com
    ServerAlias www.example.com
    . . .
</VirtualHost>

7) 문법이 맞는지 확인하세요

sudo apache2ctl configtest

8) 구성 파일이 정상으로 보이면 Apache 서버를 다시 시작하십시오.

sudo systemctl restart apache2

9) certbot을 사용하여 인증서를 설정하고 화면의 지시를 따릅니다.

sudo certbot --apache

고쳐 쓰다

모든 Let's Encrypt 인증서는 3개월 동안 유효합니다. 업데이트하려면 수동으로 실행할 수 있습니다

sudo certbot renew

또는 이 서비스를 크론 작업으로 자동화하세요.

sudo crontab -e

그리고 매주 월요일 오전 2시 30분에 갱신을 호출하려면 다음 줄을 입력하세요.

. . .
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

여기에서 더 자세한 튜토리얼을 따라갈 수 있습니다.https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8

답변2

제 경우에는 각 관련 도메인에 대한 Apache SSL 구성 파일을 교체하여 이 문제를 해결했습니다.

ServerName mydomain.com
ServerAlias www.mydomain.com

통과:

ServerName www.mydomain.com
ServerAlias mydomain.com

내 인증서는 "mydomain.com"이 아닌 "www.mydomain.com"에 대한 것이기 때문입니다.

완전한 Apache 문서:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin [email protected]
        ServerName www.mydomain.com
        ServerAlias mydomain.com
    DocumentRoot /home/mydomain.com/public_html
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|ico|png)$ \ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ \no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    <Directory />
        Options +FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /home/mydomain.com/public_html>
        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 All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>


ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

답변3

다른 SSL 오류가 표시되지 않고 httpd.conf 파일에서 "LogLevel debug" 설정을 시도한 경우 이 오류 메시지는 httpd.conf 파일에 "Listen 443"이 없음을 나타낼 수도 있습니다.

답변4

최근 자체 서명된 인증서가 만료되었을 때 이 문제가 발생했습니다. 나는 인터넷 검색을 통해 웹 사이트에서 새 인증서를 생성하는 명령을 복사했습니다.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/apache2/ssl/apache.crt

내 아파치 구성 파일: /etc/apache2/sites-available/default-ssl.conf. 인증서 파일과 키 파일은 다음 파일명을 참조합니다.

    SSLCertificateFile  /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

따라서 제 경우에 본 오류는 SSL 인증서를 생성할 때 인증서 키 파일의 올바른 위치를 제공하기만 하면 수정하기가 더 쉽습니다.

따라서 이것이 내가 올바르게 사용하고 입력해야 하는 명령입니다.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

관련 정보