SSL을 사용하여 Apache 구성
다음 지침에서는 두 보안 서버 (포트에서 443
) 및 일반 서버 (포트 80
). 먼저 두 포트에서 수신하도록 서버를 구성해야합니다. 편집 /etc/apache2/ports.conf
(데비안에서는;이 내용은 apache2.conf
) 또는 수정 /etc/apache2/apache2.conf
줄을 포함하도록 직접 :
들어 80 들어 443
다음으로, 편집 /etc/apache2/sites-enabled/yoursite
SSL 설정을 사용합니다. VirtualHosts를 사용하여 일반 및 보안 서버 설정을 분리하는 것이 유지 관리 측면에서 가장 쉬운 옵션입니다. VirtualHosts 섹션 외부의 모든 구성 (예 : ServerAdmin 설정)은 두 VirtualHost 모두에 적용됩니다.
Apache 2.4.8 이상의 버전에서는 서버 인증서가 하나의 파일에있는 중간 인증서와 연결될 것으로 예상합니다. SSL.com에서 체인 파일을 다운로드하려면 Nginx
포털 계정의 다운로드 링크 :
또는 다음과 같은 명령을 사용하여 기존 인증서와 중간 파일을 연결할 수 있습니다.
$ cat /etc/ssl/private/ca-bundle-client.crt >> /etc/ssl/private/yourdomain.crt
구성 파일에 다음 섹션을 추가하십시오.
# =============================================== # SSL /TLS 설정 # =============================================== = NameVirtualHost * : 443 DocumentRoot "/ var / www / yoursite"SSLCertificateFile /etc/ssl/private/yourdomain.chained.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key의 SSLEngine
이 구성에 대한 몇 가지 참고 사항 :
SSLEngine
서버가 SSL을 사용하도록 설정해야합니다.DocumentRoot
이 가상 호스트의 루트 디렉토리를 설정합니다. 즉, 보안 컨텐츠를 일반 컨텐츠와 완전히 분리 할 수 있습니다.SSLCertificateFile
서버 인증서 및 중간 체인과 함께 파일을 넣는 위치로 설정해야합니다.SSLCertificateKeyFile
개인 키 파일을 저장할 위치로 설정해야합니다.
구성 파일에 다음 섹션을 추가하십시오.
# =============================================== # SSL /TLS 설정 # ============================================== = NameVirtualHost * : 443 DocumentRoot "/ var / www / yoursite"SSLCertificateFile /etc/ssl/private/yourdomain.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateChainFile / etc / ssl / private / ca-bundle- client.crt
이 구성에 대한 몇 가지 참고 사항 :
SSLEngine
서버가 SSL을 사용하도록 설정해야합니다.DocumentRoot
이 가상 호스트의 루트 디렉토리를 설정합니다. 즉, 보안 컨텐츠를 일반 컨텐츠와 완전히 분리 할 수 있습니다.SSLCertificateFile, SSLCertificateChainFile,
및SSLCertificateKeyFile
인증서, 중간 및 개인 키 파일을 각각 저장할 위치로 설정해야합니다.
포트 80에서 일반 서버를 실행하려면 구성 파일에 다음 섹션을 추가하십시오.
NameVirtualHost * : 80 DocumentRoot "/ var / www / yoursite"# 호스트 별 디렉토리 설정, 옵션 등 # 이러한 옵션의 대부분은 VirtualHosts # 섹션 외부에서 설정 될 수 있습니다.
편집 한 구성 파일을 저장 한 후 웹 서버를 다시 시작하십시오. 인증서를 생성 할 때 암호를 사용한 경우 인증을받을 때 입력해야합니다.
지원
컨텐츠가 아직없는 경우 웹 서버의 루트 디렉토리가있는 곳에 기본 index.html 페이지를 작성하십시오.
그런 다음 웹 브라우저에서 https://www.yoursite.com
. SSL 연결이 열리고 페이지가 전달 된 것을 볼 수 있습니다. 자체 서명 된 인증서를 사용하는 경우 브라우저에서 서버의 ID를 확인할 수 없다는 경고를 표시합니다. 인증서를보고 수락하도록 선택할 수 있습니다. 외부 인증서를 사용하는 경우 모든 작업이 개입없이 수행되어야합니다.
http : //를 사용하여 보호 된 콘텐츠에 액세스 할 수 없는지 확인하십시오. 시도하면 오류 메시지가 표시됩니다.
문제해결
예상대로 작동하지 않으면 먼저 서버가 실제로 실행 중인지 확인하십시오. ps -a | grep apache
. 아무 것도 반환되지 않으면 다시 시작하고 터미널에서 오류 메시지를 확인하십시오.
또한 키 및 인증서 파일에 대한 권한과 테스트 HTML 파일 및 상위 디렉토리에 대한 권한이 올바르게 설정되어 있는지 확인하십시오 (위 참조).
다음으로 로그를 확인하십시오. 위의 구성 파일에서 설정 한 주 서버 로그와 SSL 로그를 모두 확인해야합니다. 유용한 정보가 없으면 Apache2 구성 파일의 LogLevel 값을 "debug"로 변경하고 Apache2를 다시 시작한 다음 다시 테스트하십시오. 이것은 더 많은 로그 파일 데이터를 제공해야합니다.
포트 80에서도 일반 웹 서버를 실행하는 경우 https : // 대신 http : //를 통해 테스트 페이지를 가져 와서 문제가 웹 서버에 있는지 아니면 SSL 연결에 있는지 식별하는 데 도움이됩니다. 위의 설정에서 웹 서버의 루트 디렉토리는 http : // 및 https : //에 대해 다르므로 동일한 콘텐츠에 액세스 할 수 없습니다 (또는 액세스 할 수 없습니다!). http : // 루트 디렉토리의 테스트 페이지가 제대로 작동하고 https : // 루트 디렉토리의 테스트 페이지가 작동하지 않는 경우 문제를 정확히 파악하는 데 도움이 될 수 있습니다.
문제가 SSL 연결 인 경우 유용한 도구는 s_client
문제 해결을위한 진단 도구입니다. TLS/ SSL 연결. 기본 사용법은 다음과 같습니다. /usr/bin/openssl s_client -connect localhost:443
. 설명서를 확인할 수있는 다른 옵션도 많이 있습니다. 오류 메시지가 표시되면 문제를 찾는 데 도움이됩니다.