Apache 使用ssl模块配置

Web服务器在默认情况下使用HTTP,这是一个纯文本的协议。正如其名称所暗示的,纯文本协议不会对传输中的数据进行任何形式的加密。而基于HTTP的Web服务器是非常容易配置,它在安全方面有缺陷。对于只读类型的网站,用户只能读取内容,并没有实际提交任何信息,HTTP仍然是一个可行的选择。但是,对于用户需输入敏感信息如身份证号码、银行卡号等来获得网站的服务,那么HTTPS是必须的。 HTTPS能够为一个网站提供以下能力。
• 确保所有经过服务器传输的数据包都是经过加密的。
• 建立了一个官方数字证书证书,使得假冒服务器无法冒充真正的服务器。
需要建立支持HTTPS的WEB服务器所要做的第一件事就是获得数字证书。数字证书可以在以下任一方法来获得。

  1. 自签名证书被推荐用于测试目的和个人项目。自签名证书,也可以用于服务提供商,不过一般适用于用户互相信任的情形。另外,自签名证书不用花钱购买。

  2. 证书可以由社区为基础的认证供应商如StartSSL和CACERT办法。这些证书也不需要花钱,但建议为个人项目。

  3. 对于全球性商业网站,建议从值得信赖的知名证书颁发机构购买证书。这些证书需要花钱,但他们增加了网络服务提供商的信誉。

  4. 准备
    我们将使用自签名证书。假已经安装了Apache Web服务器,版本为httpd2.4.6。我们需要使用OpenSSL生成自签名证书。如果尚未安装OpenSSL,它可以使用yum来安装。

yum install mod_ssl openssl

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

  1. 生成一个自签名证书
    下面的命令可以被用来产生一个自签名的证书。
    首先,生成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

生成密钥流程如下图,供参考
在这里插入图片描述
创建证书后,将文件复制到对应的目录。

cp server.crt /etc/pki/tls/certs/

cp server.key /etc/pki/tls/private/

cp server.csr /etc/pki/tls/private/

  1. 配置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

# 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
  1. 调整虚拟主机
    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

< /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

ServerAdmin email@example.com
DocumentRoot /var/www/html/a.com
ServerName www.a.com
< /VirtualHost>

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

systemctl restart httpd

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

  1. 强制Apache Web服务器始终使用https
    如果由于某种原因,你需要站点的Web服务器都只使用HTTPS,此时就需要将所有HTTP请求(端口80)重定向到HTTPS(端口443)。 Apache Web服务器可以容易地做到这一点。
    1,强制主站所有Web使用(全局站点)
    如果要强制主站使用HTTPS,我们可以这样修改httpd配置文件:

vim /etc/httpd/conf/httpd.conf

ServerName www.example.com:80
Redirect permanent / https://www.example.com
重启Apache服务器,使配置生效:

systemctl restart httpd

2,强制虚拟主机(单个站点)
如果要强制单个站点在虚拟主机上使用HTTPS,对于HTTP可以按照下面进行配置:

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

<VirtualHost *:80>
ServerName www.a.com
Redirect permanent / https://www.a.com/

重启Apache服务器,使配置生效:

systemctl restart httpd

单个站点全部使用HTTPS,则 http://www.a.com 会强制重定向跳转到 https://www.a.com

一般情况下,由于浏览器会自动拦截https未被认证的网址,因此建议同时保留 http://www.a.comhttps://www.a.com ,或者购买权威的认证服务,让用户浏览器信任https浏览访问。

综上所述,当存在如用户登录,付款交易等交互时推荐HTTPS方式,可以提高服务器的安全性。
证书可以通过各种方式获得,如:自签名、社区提供的甚至商业机构够哦买的。管理员应当谨慎选择将要使用的证书的类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值