2011-03-08 5 views
14

나는 누군가가 내게 이것을 줄 수 있기를 바랍니다. 나는 이것을 할 수 있고 동일한 아파치 서버에 2 개의 다른 보안 (SSL) 도메인을 호스트 할 필요가있는 2 개의 IP를 가지고있다. 필자는 아파치 2.2에서 하나의 IP를 사용할 수 있지만 일종의 애드 인 (add-in)을 사용하고 있지만이 작업을 가능한 한 간단하게 유지하려고하며이 작업을 수행하기 위해 두 IP를 기꺼이 사용하고자합니다. 이미 도메인에 대해 2 개의 서명 된 인증서가 있습니다.아파치에 여러 개의 SSL 인증서를 호스팅하는 것

여기에 게시 할이 설정은 작동하지만 문제는 domain2.net으로 이동하면 인증서가 도메인과 일치하지 않지만 domain1.com과 일치한다는 브라우저 경고가 나타납니다.

CentOS 5와 Apache 2.2.3을 사용하고 있습니다. CentOS는이 ssl.conf 파일을 가지고 있으며,이 라인은 내가 나에게 문제가주는 무엇을 믿는 :

SSLCertificateFile /etc/pki/tls/certs/domain1.com.crt 
SSLCertificateKeyFile /etc/pki/tls/private/domain1.com.key 

내가 가상 호스트 컨테이너에이 값을 무시하고 내가 원하는 키를 참조 할 수있는 인상이었다을하지만, 그렇게 보이지 않습니다. ssl.conf 파일에서이 두 줄을 주석 처리하면 Apache가 다시 시작되지 않습니다. ssl_log 힌트 : SSLCertificateKeyFile

이 내 가상 컨테이너 :

<VirtualHost 2.2.2.2:443> 
    SSLEngine on 
    SSLCertificateFile /etc/pki/tls/certs/domain2.net.crt 
    SSLCertificateKeyFile /etc/pki/tls/private/domain2.net.key 

    DocumentRoot "/var/www/domain2" 
    ServerName domain2.net 
    ServerAlias domain2.net 
    DirectoryIndex "index.php" 

    <Directory /var/www/html/domain2> 
    Options -Indexes FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 
</VirtualHost> 


<VirtualHost 1.1.1.1:444> 
    SSLEngine on 
    SSLCertificateFile /etc/pki/tls/certs/domain1.com.crt 
    SSLCertificateKeyFile /etc/pki/tls/private/domain1.com.key 

    DocumentRoot "/var/www/html" 
    ServerName domain1.com 
    ServerAlias domain1.com 
    DirectoryIndex "index.php" 

    <Directory /var/www/html> 
    Options -Indexes FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    </Directory> 
</VirtualHost> 

어떻게 SSL을 사용하여 작업이 두 도메인을 얻을 수 있나요? 또한 다른 IP에 대해 동일한 포트를 사용하려고했지만 Apache가 다시 시작되지 않습니다.

나는 정말 손해를보고 누군가가 손을 빌릴 수 있다면 정말 고마워.

답변

10

큰 질문입니다!

두 대의 SSL 인증서를 동일한 서버에서 사용할 수있었습니다. 당신이하려는 일을 할 수 있어야합니다. 나 같은 이상한 눈에 띄는 구성에

것들 :

  1. 내가 모두 SSL로 보호 된 사이트에 포트 443을 사용하는 것이 좋습니다 것입니다. 당신은 아파치의 conf의 특정 명령이 /etc/apache2/ports.conf

    Listen 443 
    

    에 있습니다 나를 위해 포트 443에서 수신 어딘가에 파일이 있어야합니다.

  2. 가상 호스트마다 동일한 도메인을 사용하는 ServerName과 ServerAlias가있는 것이 이상하게 보입니다. ServerAlias를 다른 것으로 만들거나 꺼내십시오.

    ServerName domain1.com 
    ServerAlias www.domain1.com 
    

  3. 게시 된 conf에서 IP와 도메인을 바꾼 것으로 가정합니다. 실제 IP가 아닌 경우에도 SSL 외부에서 올바른 위치로 이동할 수 있는지 다시 한 번 확인하십시오 (분명히 SSL이 작동하지 않기 때문에).

.

자세한 내용은 apache2 오류 로그를 확인하십시오. 나에게 로그는 /var/log/apache2/error.log에있다. 다음과 같이 설정할 수 있습니다 : ErrorLog/var/log/apache2/error.로그

그리고 마침내, 여기에 참조 용으로 내 ssl-default (ssl.conf)가 있습니다. 내 도메인과 IP를 예제 conf에서 사용했던 도메인으로 대체했습니다. 내가 와일드 카드 인증서를 가지고 있기 때문에 NameVirtualHost와 협력하는 여러 하위 도메인을 가지고있다.

<IfModule mod_ssl.c> 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
</Directory> 
<Directory /var/www/> 
    Options FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    allow from all 
</Directory> 

NameVirtualHost 1.1.1.1:443 
NameVirtualHost 2.2.2.2:443 

ErrorLog /var/log/apache2/error.log 
# Possible values include: debug, info, notice, warn, error, crit, 
# alert, emerg. 
LogLevel warn 
CustomLog /var/log/apache2/ssl_access.log combined 

<FilesMatch "\.(cgi|shtml|phtml|php)$"> 
    SSLOptions +StdEnvVars 
</FilesMatch> 

# 1.1.1.1 = domain1.com 

<VirtualHost 1.1.1.1:443> 
    ServerName www.domain1.com 

    ServerAdmin [email protected] 

    SSLEngine on 
    SSLCertificateKeyFile /var/www/ssl/domain1.key 
    SSLCertificateFile /var/www/ssl/wildcard.domain1.crt 

    BrowserMatch ".*MSIE.*" \ 
    nokeepalive ssl-unclean-shutdown \ 
    downgrade-1.0 force-response-1.0 

    DocumentRoot /var/www/domain1/www.domain1.com/web 
    DirectoryIndex index.php index.html 
</VirtualHost> 

<VirtualHost 1.1.1.1:443> 
    ServerName secure.domain1.com 

    ServerAdmin [email protected] 

    SSLEngine on 
    SSLCertificateKeyFile /var/www/ssl/domain1.key 
    SSLCertificateFile /var/www/ssl/wildcard.domain1.crt 

    BrowserMatch ".*MSIE.*" \ 
    nokeepalive ssl-unclean-shutdown \ 
    downgrade-1.0 force-response-1.0 

    DocumentRoot /var/www/domain1/secure.domain1.com/ 
    DirectoryIndex index.php index.html 
</VirtualHost> 


# 2.2.2.2 = *.domain2.com 

<VirtualHost 2.2.2.2:443> 
    ServerName admin.domain2.com 

    ServerAdmin [email protected] 

    SSLEngine on 
    SSLCertificateKeyFile /var/www/ssl/domain2.key 
    SSLCertificateFile /var/www/ssl/domain2.crt 

    BrowserMatch ".*MSIE.*" \ 
    nokeepalive ssl-unclean-shutdown \ 
    downgrade-1.0 force-response-1.0 

    LogLevel warn 
    CustomLog /var/log/apache2/access.log combined 
    ErrorLog /var/log/apache2/error.log 

    DocumentRoot /var/www/domain2/secure.domain2.com/web 
    DirectoryIndex index.php index.html 

    php_flag display_errors on 
    php_value error_reporting 7 
</VirtualHost> 

</IfModule> 

나는 이것이 도움이되기를 바란다 !!

+1

많은 도움이되었습니다. 나는 또한 두 가상 호스트에 대해 동일한 인증서를 제공하는 아파치를했다. ServerName을 각 가상 호스트에 고유 한 것으로 변경하여 해결했습니다! 이 사람이 다음 사람을 검색하는 데 적합하다는 것을 확인하기 만하면됩니다. – Christian

0

별도의 ssl.config 파일이 필요하지 않지만 사용하려면 SSL <VirtualHost XXX:443> 컨테이너를 httpd conf 파일이 아닌 ssl.conf 파일에 저장하십시오.

우리가 사이트에서 사용하는 다른 옵션은 httpd.conf 파일에 ssl.conf 파일의 설정을 저장하고 ssl.conf 파일의 이름을 ssl.conf.bak와 같은 것으로 변경하는 것입니다 (참고).

관련 문제