CentOS에서 Apache HTTPS 서버를 구축하는 메모

소개



취미나 여러가지로 비슷한 것을 하는 데 매번 잊어 곤란하기 때문에, 자신용의 비망록으로서 Apache로 HTTPS 서버를 세우는 순서를 메모해 둔다. 이번에는 도메인 취득이 완료되었으며 SSL 인증서는 letsencrypt로 준비됩니다.

*이 기사에 쓰고 있는 일체의 작업은 Root 유저로 실시하고 있으므로, 적절히 sudosu - 등으로 실행해 주세요.

환경


  • CentOS7.7
  • Apache2.4

  • Apache 도입



    우선 설치한다.
    yum -y install httpd
    

    자동 시작을 활성화하고 시작합니다.
    systemctl enable httpd.service
    systemctl start httpd.service
    

    이제 자신의 도메인에 액세스하면 Apache에서 평소 화면이 보일 것입니다.

    그런 다음 SSL 용 모듈도 설치합니다.
    yum -y install mod_ssl
    

    이 후 /etc/httpd/conf/httpd.conf의 ServerName을 自分のドメイン名:80로 다시 씁니다. 예를 들면 example.com:80라든지.

    /etc/httpd/conf/httpd.conf
    ServerName example.com:80
    

    Certbot 소개



    다음은 letsencrypt 인증서 발급 및 업데이트에 사용되는 Certbot 설치입니다.
    yum -y install epel-release
    yum install certbot
    

    인증서 발급



    초기 상태라면 /var/www/html는 그대로, example.com에는 자신의 도메인명을, [email protected]는 자신의 메일 주소를 넣어 둔다.
    certbot certonly --webroot \
    -w /var/www/html \
    -d example.com \
    -m [email protected] \
    --agree-tos -n
    

    Congratulations! 라고 나오면 성공.

    그런 다음 인증서를 반영합니다. /etc/httpd/conf.d/ssl.conf 의 이하 3 행을 재기록한다 (코멘트 아웃 되고 있는 것도 있다)

    /etc/httpd/conf.d/ssl.conf
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
    

    일단 Apache를 재부팅 systemctl restart httpd 그러면 https://ドメイン名로 액세스 할 수 있어야합니다.



    강제 SSL화



    http로 액세스하면 https로 리디렉션합니다.

    방법


    /etc/httpd/conf/httpd.conf의 마지막에 이것을 추기해 둔다.

    /etc/httpd/conf/httpd.conf
    ewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    Apache를 재시작 systemctl restart httpd 그러면 성공하면 http://...로 액세스해도 https://로 변경되어 브라우저의 키 마크가 나온다.

    초기 페이지 지우기



    앞서 보았던 이것

    를 지워 둔다. 덧붙여서 같은 계층에 index.html가 있으면 파일명의 지정이 없다.

    방법


    http://example.com/ 아래의 모든 부분을 주석 처리합니다. 변경 후 Apache를 다시 시작하는 것을 잊지 마십시오.

    /etc/httpd/conf.d/welcome.conf
    # <LocationMatch "^/+$">
    #    Options -Indexes
    #     ErrorDocument 403 /error/noindex.html
    # </LocationMatch>
    

    목록 표시 비활성화



    아래 이미지와 같이 서버의 파일 목록을 볼 수 있으므로 무효화합니다.


    방법


    /etc/httpd/conf.d/welcome.conf/etc/httpd/conf/httpd.conf를 주석 처리합니다.

    etc/httpd/conf/httpd.conf
    # Options Indexes FollowSymLinks
    

    이쪽도 변경 후에 Apache의 재기동을.

    인증서 자동 업데이트



    여기 을 참고로 cron을 설정하였습니다. 아래의 예라면 매월 1일 오전 3시에 인증서를 갱신한다. 단, 기한이 30일 이내에 다가오지 않으면 실행되지 않으므로 주의.

    방법


    Options Indexes FollowSymLinks에 적절한 이름의 파일을 만들어 다음을 작성하십시오. 이번은 /etc/cron.d/ 라는 파일명의 예.

    /etc/cron.d/letsencrypt
    00 03 01 * * root /bin/certbot renew --webroot-path /var/www/html/ --post-hook "systemctl reload httpd"
    

    마지막으로



    전혀 이해가 쫓기지 않기 때문에 시간이 있을 때 아파치에 대해 한 번 다시 배우고 싶다...
    오자・수정등 있으면 연락해 주십시오.

    좋은 웹페이지 즐겨찾기