如何配置多个 virtualhost使用相同的SSL证书 - Apache

语境:

我有一个域名: example.com,但我想创建一个像这样的域 api.example.com 使用它像网络服务一样。

昨晚,我有一个免费的SSL证书使用 让我们加密.

我的域名 example.com 应该打开内容 /var/www/website/.

我的域名 api.example.com 应该打开内容 /var/www/api/.

我正在寻找互联网上的一些信息,我创建了这些文件 /etc/apache2/sites-available/

/etc/apache2/sites-available/example.com.

<VirtualHost *:80>
ServerName  example.com
DocumentRoot    /var/www/website/
LogLevel debug
ErrorLog ${APACHE_LOG_DIR}/example.com/error.log
<Directory "/var/www/website/">
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName  example.com
DocumentRoot    /var/www/website/
LogLevel debug
ErrorLog ${APACHE_LOG_DIR}/example.com/error_ssl.log
SSLEngine on
SSLCertificateKeyFile   /etc/apache2/ssl/example.com/privkey.pem
SSLCertificateFile      /etc/apache2/ssl/example.com/cert.pem
SSLCertificateChainFile /etc/apache2/ssl/example.com/chain.pem
<Directory "/var/www/website/">
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>

/etc/apache2/sites-available/api.example.com.

<VirtualHost *:80>
ServerName  api.example.com
DocumentRoot    /var/www/api/
#RewriteEngine On
#RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
<Directory "/var/www/api/">
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName  api.example.com
DocumentRoot    /var/www/api/
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/error.log
SSLEngine on
SSLCertificateKeyFile   /etc/apache2/ssl/example.com/privkey.pem
SSLCertificateFile      /etc/apache2/ssl/example.com/cert.pem
SSLCertificateChainFile /etc/apache2/ssl/example.com/chain.pem
<Directory "/var/www/api/">
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>

我创建了两个文件,因为我虽然我们需要分隔域,但是当我尝试输入时 example.com 我有内容 api.example.com.

和 让我们加密,我已经为两个域创建了相同的SSL证书,并且文件所在 /etc/apache2/ssl/example.com/.

看答案

我找到了解决方案!

我已经编辑过了 httpd.conf 和 ports.conf.

/etc/apache2/ports.conf.

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost *:80
Listen 80
NameVirtualHost *:443
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>

/etc/apache2/httpd.conf.

SSLStrictSNIVHostCheck on

现在我可以使用该域来网站和WebService



原文链接:https://rsbk.cpolar.cn/post/37.html

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

返回顶部