当前位置: 首页 > 编程笔记 >

如何使用单个Apache服务器设置多个SSL主机

公良同
2023-03-14
本文向大家介绍如何使用单个Apache服务器设置多个SSL主机,包括了如何使用单个Apache服务器设置多个SSL主机的使用技巧和注意事项,需要的朋友参考一下

在本文中,我们将向您展示如何仅使用单个IP地址在带有Apache的CentOS上设置多个SSL证书。通常,网站管理员被限制为每个插座使用具有IP的单个SSL证书,这将给公司带来大量投资。此限制可能导致他们购买HTTP网站的多个IP地址作为其域名托管服务,或购买允许他们利用多个网络适配器的硬件。

SSL协议的扩展名为“服务器名称指示(SNI)”允许这样做。当前大多数台式机和移动Web浏览器都支持SNI。使用SNI的主要好处是无需购买更多IP地址即可保护多个网站的能力。

组态

确保已安装并启用了mod_ssl安全模块,以便Apache Web服务器可以使用OpenSSL库和工具包:

# yum install mod_ssl openssl

执行以下命令

# mkdir -p /etc/httpd/ssl/
# mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak
# cd /etc/httpd/ssl/

为您的域生成SSL证书签名请求文件

# openssl genrsa -out mydomain1.key 2048
# openssl req -new -key mydomain1.key -out mydomain1.csr
# openssl genrsa -out domain2.key 2048
# openssl req -new -key mydomain2.key -out mydomain2.csr
Enter the following details for your certificates:
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:Telengana
Locality Name (eg, city) []:Hyderabad
Organization Name (eg, company) [Internet Widgits Pty Ltd]:mydomain1.com
Organizational Unit Name (eg, section) []:mydomain.com
Common Name (e.g. server FQDN or YOUR name) []:mydomain1.com
Email Address []:sslcertificate@domain1.com

当我们在生产环境中部署时,建议安装商业SSL证书。或者,我们只使用以下命令生成用于开发目的或搭建网站的自签名SSL证书

# openssl x509 -req -days 365 -in mydomain1.csr -signkey mydomain1.key -out domain1.crt
# openssl x509 -req -days 365 -in mydomain2.csr -signkey mydomain2.key -out mydomain2.crt

编辑“ ssl.conf” Apache配置文件

# vi /etc/httpd/conf.d/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Listen 443
NameVirtualHost *:443
   SSLPassPhraseDialog builtin
   SSLSessionCacheTimeout 300
   SSLMutex default
   SSLRandomSeed startup file:/dev/urandom 256
   SSLRandomSeed connect builtin
   SSLCryptoDevice builtin
   SSLStrictSNIVHostCheck off
<VirtualHost *:443>
   DocumentRoot /var/www/html/mydomain1
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   SSLEngine on
   SSLProtocol all -SSLv2
   SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
   SSLCertificateFile /etc/httpd/ssl/mydomain1.cr
   SSLCertificateKeyFile /etc/httpd/ssl/mydomain1.key
   ErrorLog logs/ssl_error_log
   TransferLog logs/ssl_access_log
   LogLevel warn
   <Files ~ "\.(cgi|shtml|phtml|php3?)$">
   SSLOptions +StdEnvVars
   </Files>
   SetEnvIf User-Agent ".*MSIE.*" \
   nokeepalive ssl-unclean-shutdown \
   downgrade-1.0 force-response-1.0
   CustomLog logs/ssl_request_log \
   "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
<VirtualHost *:443>
   DocumentRoot /var/www/html/mydomain2
   ServerName mydomain2.com
   ServerAlias www.mydomain2.com
   SSLEngine on
   SSLProtocol all -SSLv2
   SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
   SSLCertificateFile /etc/httpd/ssl/mydomain2.crt
   SSLCertificateKeyFile /etc/httpd/ssl/mydomain2.key
   ErrorLog logs/ssl_error_log
   TransferLog logs/ssl_access_log
   LogLevel warn
   <Files ~ "\.(cgi|shtml|phtml|php3?)$">
   SSLOptions +StdEnvVars
   </Files>
   SetEnvIf User-Agent ".*MSIE.*" \
   nokeepalive ssl-unclean-shutdown \
   Downgrade-1.0 force-response-1.0
   CustomLog logs/ssl_request_log \
   "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

当我们使用商业SSL证书时,签名机构可能会包括一个中间CA证书。在这种情况下,我们将创建一个新的'/etc/httpd/ssl/ca.crt'文件并将中间CA的内容粘贴到其中,然后我们需要编辑'ssl.conf'配置文件并取消注释以下行。

SSLCertificateChainFile /etc/httpd/ssl/ca.crt

因此,Apache Web服务器可以找到您的CA证书。

测试Apache配置

# /etc/init.d/httpd configtest
Syntax OK

重新启动Apache服务以使更改生效

# service httpd restart

在您喜欢的Web浏览器中打开https://mydomain1.com和https://mymydomain2.com,并验证SSL证书是否已正确安装。

完成此设置并重新启动Apache之后,您可以使用支持SNI的浏览器访问http的站点。如果设置正确,则可以访问该站点而不会出现任何警告或问题。您可以根据需要使用上述过程添加任意数量的网站或SSL证书。

 类似资料:
  • APP1在端口80上使用Apache2 APP2在端口81上使用IIS App3在端口83上使用Xampp Apache 我已经为每个端口1有了一个域。端口80 2的domain1.com。端口81 3的domain2.com。端口83的domain3.com 所有域都指向服务器,当我在域后面使用(:port)时,它工作得很好,例如。域1:83已经在端口83上打开了Xampp Apache。 每个

  • 问题内容: 嗨,我必须从多个Web服务器检索数据。首先,我以用户身份登录到我的网站。成功登录后,我必须从不同的Web服务器获取数据并显示。如何与多个服务器共享一个会话。我该如何实现? 首次登录时,创建会话和会话ID,并将其保存在该服务器的temp文件夹中。当我尝试访问另一台服务器时,如何使用登录时已经创建的当前会话。有人可以提出解决方案吗? 问题答案: 您必须使用另一个会话处理程序。 您可以: 建

  • 更新后,我在Ubuntu服务器上部署codeigniter项目时遇到了一些问题,当我点击链接时,我发现404 Apache错误。 当我把项目放进去的时候http://roy.my-domain.com/ =/var/www/html/folder-一切正常-但当我添加子目录时http://roy.my-domain.com/roy/ =/var/www/html/roy/-我收到404个错误。 当

  • 问题内容: 我正在尝试从本地网络服务器访问Active Directory。为此,我使用了最新版本的xampp和一个名为adLDAP的PHP脚本。如果我理解正确,则需要启用SSL才能访问https URL。我试着用谷歌搜索它,但是没有运气:(任何人都可以链接教程或向我解释如何在xampp / apache上为Windows 7 64bit安装SSL吗? 问题答案: Apache部分-使您能够打开h

  • 问题内容: 在以前的Express版本中,我可以这样做: 但是,在较新版本的express中,此功能不再起作用: 我应该打电话来设置证书吗?如果可以,怎么办? 问题答案: 请参阅Express文档以及https.createServer的Node文档(express建议使用的文档): createServer的其他选项位于:http : //nodejs.org/api/tls.html#tls_

  • 我需要你的帮助在这里创建一个虚拟主机在wampserver。在办公室里,我可以创建一个虚拟主机,但是当我试图在笔记本电脑上创建时,它不起作用。我仍然不知道出了什么问题。这是我做的。 > E:\Subversion\chelle。wpblog。本地的 我编辑主机文件 > 127.0.0.1chelle.wpblog.local 接下来是我在Apache中启用虚拟主机 > C:\wamp\bin\ap