RHEL 6에 아파치를 설치했습니다. 모든 것이 제대로 작동합니다. 무엇 모든 변경 및 구성에 사용하기 위해 수행해야 HTTPS를 : // localhost를 : 443 / .
"Listen 80"을 443으로 변경하면 SSL 연결 오류가 발생합니다
"오류 107 (net :: ERR_SSL_PROTOCOL_ERROR) : SSL 프로토콜 오류."
RHEL 6에 아파치를 설치했습니다. 모든 것이 제대로 작동합니다. 무엇 모든 변경 및 구성에 사용하기 위해 수행해야 HTTPS를 : // localhost를 : 443 / .
"Listen 80"을 443으로 변경하면 SSL 연결 오류가 발생합니다
"오류 107 (net :: ERR_SSL_PROTOCOL_ERROR) : SSL 프로토콜 오류."
답변:
을 사용하는 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>
변경하지 마십시오 Listen 80
에 443
에서 /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.conf
Apache를 다시 시작하십시오.
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost _default_:443>
각각 필요한 주석과 함께 필요한 모든 매개 변수를 설정합니다 . mod_ssl
당신이 설치 한 경우 패키지가 자동으로 설치되지 않은 httpd
패키지를.
[R=301,L]
대신에 사용하십시오. [R,L]
이 방법으로 다시 쓰기는 HTTP 3xx 상태 코드 의 영구 옵션을 사용합니다 .
NameVirtualHost
더 이상 사용되지 않으며 향후 Apache 버전에서 제거 될 예정입니다. 그것은 이미 no-op입니다. 2.Listen 443
아파치가 이미 많은 리눅스 배포판에서 포트 443을 수신하도록 구성되어 있다면 문제가 발생할 수 있습니다. 이 행이 다른 곳에 구성되어 있지 않은 경우에만 추가하십시오.