Apache使用ssl配置https

1. 准备

在这篇文档中,我们将使用自签名证书。假设CentOS7 已经安装了Apache Web服务器,版本为httpd2.4.6。我们需要使用OpenSSL生成自签名证书。如果尚未安装OpenSSL,它可以使用yum来安装。

# yum install mod_ssl openssl

安装完毕后,会自动生成 /etc/httpd/conf.d/ssl.conf 文件,下文配置会用到!

 

2. 生成一个自签名证书

下面的命令可以被用来产生一个自签名的证书。

首先,生成2048位的加密私钥

# openssl genrsa -out server.key 2048

然后,生成证书签名请求(CSR),这里需要填写许多信息,如国家,省市,公司等

# openssl req -new -key server.key -out server.csr

最后,生成类型为X509的自签名证书。有效期设置3650天,即有效期为10年

# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

生成密钥流程如下图,供参考

use-ssl-httpd-module-configuration-https

创建证书后,将文件复制到对应的目录。

# cp server.crt /etc/pki/tls/certs/
# cp server.key /etc/pki/tls/private/        
# cp server.csr /etc/pki/tls/private/

 

3. 配置Apache Web服务器

首先,修改下面的配置文件。仅需配置红色部分 SSLCertificateFile 和 SSLCertificateKeyFile

# vim /etc/httpd/conf.d/ssl.conf

#
# When we also provide SSL we have to listen to the 
# the HTTPS port in addition.
#
Listen 443 https

##
## SSL Virtual Host Context
##

<VirtualHost _default_:443>
# General setup for the virtual host, inherited from global configuration

DocumentRoot "/var/www/html/a.com"
ServerName www.a.com:443

### overwrite the following parameters ###
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key

### The following parameter does not need to be modified in case of a self-signed certificate. ###
### If you are using a real certificate, you may receive a certificate bundle. The bundle is added using the following parameters ###
SSLCertificateChainFile /etc/pki/tls/certs/example.com.ca-bundle

然后,重新启动httpd服务使更改生效

# systemctl restart httpd          // 或者  /etc/init.d/httpd restart

Web服务器现在可以使用HTTPS

 

4. 调整虚拟主机

Apache Web服务器可以配置为多个Web站点。这些站点在httpd的配置文件中以虚拟主机的形式定义。例如,让我们假设我们的Apache Web服务器托管站点为www.a.com,网站所有的文件都保存在/var/www/html/a.com/目录。

对于虚拟主机,典型的HTTP配置是这样的。

# vim 

#  vim /etc/httpd/conf.d/httpd-vhosts.conf

<VirtualHost *:80>
 ServerName www.a.com
 Redirect permanent / https://www.a.com/
 DocumentRoot "/var/www/html/a.com"

 <Directory "/var/www/html/a.com">
 Options None
 AllowOverride None
 Require all granted
 </Directory>
</VirtualHost>




# vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:443

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/server.crt
    SSLCertificateKeyFile /etc/pki/tls/private/server.key
    <Directory /var/www/html/virtual-web>
        AllowOverride All
    </Directory>
    ServerAdmin email@example.com
DocumentRoot /var/www/html/a.com

ServerName www.a.com
</VirtualHost>


需要按照上面的配置,定义每个虚拟主机。添加虚拟主机后,重新启动Web服务。

# systemctl restart httpd

现在的虚拟主机就可以使用HTTPS

注意,防火墙、selinux、主配置虚拟主机监听443
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值