我最近成为了一个旧系统的新管理员,每个人都抱着“不要碰它,否则它可能会坏掉”的心态来对待它。现在我被告知“碰它,但不要坏它!”
任务:我应该做什么:从服务器中删除域名 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 证书。如果不可能,我可以推迟到下一个。
提前致谢!
已编辑以便于阅读。
参考:
答案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>