Fedora 4、Apache 2.2.0、tomcat 5.5.7、openssl 0.9.7f、SSL 证书、域名和 IP 地址

Fedora 4、Apache 2.2.0、tomcat 5.5.7、openssl 0.9.7f、SSL 证书、域名和 IP 地址

我最近成为了一个旧系统的新管理员,每个人都抱着“不要碰它,否则它可能会坏掉”的心态来对待它。现在我被告知“碰它,但不要坏它!”

任务:我应该做什么:从服务器中删除域名 www.domain1.com 并将其替换为 www.domain2.com。

背景:www.domain1.com 使用 SSL 证书托管 SOAP 和受保护的数据检索站点。
该服务器早已过时。它是 Fedora 4 服务器,带有 Apache 2.2.0、tomcat 5.5.7 和 openssl 0.9.7f。

我正在尝试:在服务器上使用 SSL 证书设置 www.domain2.com,以允许我们的业务关系从 www.domain2.com/SOAP 访问 SOAP。我们也会将其他网站迁移到那里。

路径一:我本来想在同一个 IP 地址 (1.1.1.1) 上设置两个域。这样比较简单。但是这看起来不太容易或安全(请参阅底部的参考资料)。我发现我没有足够新的 Apache 或 openssl 版本来执行此操作。

路径二:我决定看看我需要做些什么来更新它们,结果发现 yum 和 apt-get 不再有 FC4 的镜像。我在网上找到了可以手动安装的版本。我不想走那条路,因为我怀疑我能否逆转这些变化。我不喜欢把希望寄托在灵丹妙药上,如果我错过了,它也会杀死我。

我有:

  • 我有 www.domain2.com 的 SSL 证书。
  • www.domain2.com 指向与 www.domain1.com 相同的 IP(1.1.1.1)。
  • 我的服务器分配了另外三个可用的 IP 地址(1.1.1.2、1.1.1.3 和 1.1.1.4)。

由于我走的路看起来不可行,我想我可以在 1.1.1.2 上设置 www.domain2.com。使用新安装的 Apache,然后也可以链接到 tomcat 以访问 SOAP。

问题:

  • 我是否可以在 IP 为 1.1.1.2 的当前版本的 Apache 上及其证书设置域 2,还是需要安装另一个版本的 Apache 来并行运行?
  • 如果它在同一个 Apache 中,我该如何配置 httpd-ssl.conf 文件?

当前的 httpd-ssl.conf(删除了注释):

   Listen 443

   AddType application/x-x509-ca-cert .crt
   AddType application/x-pkcs7-crl    .crl

   SSLPassPhraseDialog  builtin


   SSLSessionCache        shmcb:/usr/local/apache-2.2.0/logs/ssl_scache(512000)
   SSLSessionCacheTimeout  300

   SSLMutex  file:/usr/local/apache-2.2.0/logs/ssl_mutex

   ##
   ## SSL Virtual Host Context
   ##

   <VirtualHost *:443>
       ServerName domain1.com
       ServerAdmin [email protected]
       DocumentRoot /www/www.domain.com
       ErrorLog logs/sslerror_log
       CustomLog logs/ssl_request_log \
             "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
       TransferLog logs/ssltransfer_log
       JkMount  /domain1app1/* ajp13
       JkMount /domain1app2/* ajp13
       JkMount /SOAPdomain1app3/* ajp13
       JkMount /InformationRetrevaldoamin1app4/* ajp13

   SSLEngine on

   SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

   SSLCertificateFile /usr/local/apache-2.2.0/conf/domain1.crt

   SSLCertificateKeyFile /usr/local/apache-2.2.0/conf/domain1.key

   SSLCertificateChainFile /usr/local/apache-2.2.0/conf/intermediate.crt

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

   BrowserMatch ".*MSIE.*" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
   </VirtualHost>  

有人对如何进行有什么建议吗?我正在寻找最小的更改,以防万一我搞砸了,可以“撤消”。当涉及到这类事情时,我的工具箱非常小。任何帮助都将不胜感激!如果您有我还没有想到的方法,请告诉我。:) 哦,我的老板希望我在星期六 4 小时维护窗口期间获得 SSL 证书。如果不可能,我可以推迟到下一个。

提前致谢!

已编辑以便于阅读。

参考:

同一 IP 地址和同一端口上有多个 SSL 域吗?

SSL 站点在 Apache 和 Ubuntu 中未使用正确的 IP

无法在 apache 上安装 SSL 证书

答案1

您不应该安装新的 Apache。Apache 可能无论如何都是从 RPM 包安装的,因此只能手动安装第二个 Apache。在我看来,最好避免这种麻烦。但是,您还有其他选择。

选项1:您可以配置 Apache 来处理这两个站点。为此,您需要:

  • 使用带有 VirtualHost 指令的显式 IP 地址
  • 并向每个主机提供一个 NameVirtualHost 指令

这实际上是从当前配置中复制粘贴的,只做了一些更改。它应该看起来像下面的配置。这样,www.domain1.com 和 www.domain2.com 提供相同的内容,因为 JkMount 指令保持不变。

您应该在编辑之前复制当前的 httpd-ssl.conf 文件,因此如果我在配置中搞砸了某些内容,您可以复制回原始文件,然后重新启动服务器。

选项 2:如果您只需要更改域名,您实际上什么都不用做。新域名的注册与 Apache 没有任何关系。注册完成后,DNS 服务器会将 www.domain2.com 解析为 1.1.1.1(以前是 www.domain1.com)。完成此操作后,删除 domain1.com,您只需替换 ServerName 指令和证书。

如果必须让两个域共存,无论多长时间,都请转到 1。

选项 3:如果你只是添加一个

ServerAlias www.domain2.com

行添加到您现有的配置中,在 VirtualHost 定义中,Apache 仍将为两个域提供服务(在同一个 IP 地址上)。但是,在这种情况下,您不能为这两个域使用不同的证书。

--

以下是选项 1 的修改后的配置:

Listen 443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

SSLPassPhraseDialog  builtin
SSLSessionCache        shmcb:/usr/local/apache-2.2.0/logs/ssl_scache(512000)
SSLSessionCacheTimeout  300

SSLMutex  file:/usr/local/apache-2.2.0/logs/ssl_mutex

NameVirtualHost 1.1.1.1:443
NameVirtualHost 1.1.1.2:443

##
## SSL Virtual Host Context
##

<VirtualHost 1.1.1.1:443>
    ServerName domain1.com
    ServerAdmin [email protected]
    DocumentRoot /www/www.domain.com
    ErrorLog logs/sslerror_domain1_log
    CustomLog logs/ssl_request_domain1_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    TransferLog logs/ssltransfer_domain2_log
    JkMount  /domain1app1/* ajp13
    JkMount /domain1app2/* ajp13
    JkMount /SOAPdomain1app3/* ajp13
    JkMount /InformationRetrevaldoamin1app4/* ajp13

    SSLEngine on

    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

    SSLCertificateFile /usr/local/apache-2.2.0/conf/domain1.crt
    SSLCertificateKeyFile /usr/local/apache-2.2.0/conf/domain1.key
    SSLCertificateChainFile /usr/local/apache-2.2.0/conf/intermediate_for_domain1.crt

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

    BrowserMatch ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
</VirtualHost>

<VirtualHost 1.1.1.2:443>
    ServerName domain2.com
    ServerAdmin [email protected]
    DocumentRoot /www/www.domain.com
    ErrorLog logs/sslerror_domain2_log
    CustomLog logs/ssl_request_domain2_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    TransferLog logs/ssltransfer_domain2_log

    JkMount  /domain1app1/* ajp13
    JkMount /domain1app2/* ajp13
    JkMount /SOAPdomain1app3/* ajp13
    JkMount /InformationRetrevaldoamin1app4/* ajp13

    SSLEngine on 
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

    SSLCertificateFile /usr/local/apache-2.2.0/conf/domain2.crt
    SSLCertificateKeyFile /usr/local/apache-2.2.0/conf/domain2.key
    SSLCertificateChainFile /usr/local/apache-2.2.0/conf/intermediate_for_domain2.crt

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

    BrowserMatch ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
</VirtualHost>

相关内容