아파치에서 SSL을 구성하는 방법?


10

RHEL 6에 아파치를 설치했습니다. 모든 것이 제대로 작동합니다. 무엇 모든 변경 및 구성에 사용하기 위해 수행해야 HTTPS를 : // localhost를 : 443 / .

"Listen 80"을 443으로 변경하면 SSL 연결 오류가 발생합니다

"오류 107 (net :: ERR_SSL_PROTOCOL_ERROR) : SSL 프로토콜 오류."

답변:


13

을 사용하는 apache2경우 다음을 수행해야합니다.

1 단계 : OpenSSL을 사용하여 사이트 보안에 사용되는 키를 생성하십시오. 이 키는 보안 사이트에 대한 트래픽을 암호화 및 암호 해독 할 때 사용됩니다.

$ openssl genrsa -out mydomain.key 1024

이 명령은 1024 비트 개인 키를 만들어 mydomain.key 파일에 넣습니다.

2 단계 : 자체 인증서 생성

$ openssl req -new -key mydomain.key -x509 -out mydomain.crt

3 단계 : 디렉토리에 개인 키를 유지하고 디렉토리 /etc/apache2/ssl.key/에 인증서를 보관하십시오 /etc/apache2/ssl.crt/.

참고 :ssl.key 디렉토리가 루트 만 읽을 수 있어야합니다.

4 단계 : 이제 httpd.conf에서 파일 을 편집해야합니다 /etc/apache2.

이제이 파일에는 다음과 같은 내용이 포함되어야합니다.

NameVirtualHost *:80
NameVirtualHost *:443
Listen 443

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
</VirtualHost>


<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>


<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>

처음 세 줄은 필요하지 않습니다. 1. NameVirtualHost더 이상 사용되지 않으며 향후 Apache 버전에서 제거 될 예정입니다. 그것은 이미 no-op입니다. 2. Listen 443아파치가 이미 많은 리눅스 배포판에서 포트 443을 수신하도록 구성되어 있다면 문제가 발생할 수 있습니다. 이 행이 다른 곳에 구성되어 있지 않은 경우에만 추가하십시오.
lanoxx

3

변경하지 마십시오 Listen 80443에서 /etc/httpd/conf/httpd.conf. SSL은에 구성되어 /etc/httpd/conf.d/ssl.conf있습니다. RHEL 6에서 SSL은 기본적으로 자체 서명 된 인증서로 활성화 및 청취됩니다.

찾아보기 만하면 SSL을 사용하여 기본 사이트로 이동할 수 있습니다 https://localhost(URL 끝에 포트를 추가하지 않아도 됨).

모든 HTTP 요청을 HTTPS로 전달하려면 (이것이 달성하려는 것이라고 생각하는 경우) 영구적 리디렉션을 추가하거나 Apache 모듈을 사용할 수 있습니다 mod_rewrite.

가장 쉽고 안전한 방법은 영구적 인 리디렉션을 설정하는 것입니다. 명명 된 가상 호스트를 활성화 Redirect하고에 VirtualHost에 지시문을 추가하십시오 /etc/httpd/conf/httpd.conf.

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName localhost
   Redirect permanent / https://localhost
</VirtualHost>

를 사용 mod_rewrite하여 명명 된 가상 호스트도 만듭니다. 권장되는 방법은 아니지만 작동합니다.

NameVirtualHost *:80
<VirtualHost *:80>
   # Enable the Rewrite engine
   RewriteEngine On
   # Make sure the connection is not already HTTPS
   RewriteCond %{HTTPS} !=on
   # This rewrites the URL and forwards to https
   RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

SSL을 끄려면이 행을 주석 처리하고 /etc/httpd/conf.d/ssl.confApache를 다시 시작하십시오.

LoadModule ssl_module modules/mod_ssl.so
Listen 443

실제로 RHEL6 용 mod_ssl 패키지를 추가하면 /etc/httpd/conf.d/ssl.conf가 생성됩니다.이 모듈은 모듈을로드하고 <VirtualHost _default_:443>각각 필요한 주석과 함께 필요한 모든 매개 변수를 설정합니다 . mod_ssl당신이 설치 한 경우 패키지가 자동으로 설치되지 않은 httpd패키지를.
jsbillings

1
다시 쓰기에 한 가지만 추가하고 싶습니다. 그냥 [R=301,L]대신에 사용하십시오. [R,L]이 방법으로 다시 쓰기는 HTTP 3xx 상태 코드 의 영구 옵션을 사용합니다 .
dcestari
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.