Apache SSL证书加密配置

本文以apache为例,配置SSl证书建立HTTPS访问的加密通道。



1.部署SSL证书的准备工作

  除了已经安装好Apache的web环境,我们还需要安装SSL模块
# yum install mod_ssl openssl

2. 生成一个自签名证书

  首先,假设我们的域名为tetst.com,我们来生成一个2048位的加密私钥
# openssl genrsa -out test.key 2048
  然后,生成证书签名请求(CSR),这里需要填写许多信息,如国家,省市,公司等
# openssl req -new -key test.key -out test.csr

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

# openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt
  PS:第2个命令是生成证书请求,如果你需要向CA申请SSL证书,email一定要是你的域名后缀的。提交给 ssl 提供商的时候就是这个 csr 文件。当然我这里并没有向证书提供商申请,而是自己签发证书。

3.将生成的证书文件移动到相应目录  

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

4. 配置Apache 配置文件

  对于LAMP 环境,在建立网站的时候,我个人习惯是直接在/etc/httpd/conf.d目录下直接建立vhost.conf文件来配置网站,当然也有人习惯直接配置httpd.conf,其实原理一样。我们只需要在vhost.conf中把80端口改成443,然后加入下面粗体字三行代码。

ServerAdmin web@iewb.net
ServerName test.com
ServerAlias test.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/oapod.crt
SSLCertificateKeyFile /etc/pki/tls/private/oapod.key
DocumentRoot /home/test.com/public_html/
ErrorLog /home/test.com/logs/error.log
CustomLog /home/test.com/logs/access.log combined

  重新启动httpd服务后,即可通过https访问网站了,自行颁发的SSL证书能够实现加密传输功能,但浏览器并不信任,会有安全提示

  只不过进行如上配置后, http服务不能访问了,如果我们需要两种访问都可以访问,那我们在vhost.conf中再建立一个主机,允许80端口访问。

ServerAdmin web@iewb.net
ServerName test.com ServerAlias test.com
DocumentRoot /home/test.com/public_html/
ErrorLog /home/test.com/logs/error.log
CustomLog /home/test.com/logs/access.log combined

  还有一种情况是我们需要用户进行http访问的时候自动转成https加密访问,

ServerAdmin web@iewb.net
ServerName test.com
Redirect permanent / https://test.com/

  只局部配置HTTPS访问/指定路径
RewriteEngine on
RewriteBase /test
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

配置文件参数 说明

SSLEngine on    启用SSL功能
SSLCertificateFile    证书文件
SSLCertificateKeyFile    私钥文件
SSLCertificateChainFile    证书链文件


推广推荐

Proudly powered by WordPress | IEWB.NET 2009-2021 版权所有