Apache SSL Module 介绍,原理及安装

概要:

在互联网上面,网络安全问题日益突出。特别是在邮件,网上银行,网上购物。为了提高数据在互联网上传输的安全性,我们需要对HTTP协议进行加密,目前用的最多的就是说SSL(Security Socket Layer) , 加密套接字协议层。它的原理就是在http客户端(浏览器)与http服务器之间建立一个安全的通道。数据在internet上是加密后双向传送的。意味着无论是http请求还是http响应的信息全部被加密,包括客户正在要求的 URL地址,任何提交的格式内容,任何HTTP授权信息,如用户名,密码。以及从服务器返回给客户的数据。

内容:

基本原理:

SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下

  • HTTP层
  • SSL层
  • TCP 层


如果利用SSL协议来访问网页,其步骤如下:

在浏览器中地址栏中输入https://www.imphper.cn

http层:把讲用户请求翻译成http请求,如果GET /index.htm. HTTP/1.1

Host http://www.imphper.cn

SSL层:利用下层信道协出一份加密密钥,并用此密钥加密http请求

 TCP层:与web 服务器建立连接,传递SSL处理后的数据

服务器端接收到数据后,首先会用SSL协商出的密钥对数据解密,然后提交给http层处理。处理后的结果同样经过加密传输到客户端

普通的Web服务器并没有在http应用层与Tcp层加入SSL层,所以为了保障数据的安全传输,我们需要在Apache服务器上加入SSL模块。搭建一个安全加密的Web服务器。

SSL证书:

1、SSL所使用的证书可以是自己建的生成的,也可以通过一个商业性CA如Verisign 或 Thawte签署证书。

2、证书的概念:首先要有一个根证书,然后用根证书来签发服务器证书和客户证书,一般理解:服务器证书和客户证书是平级关系。在SSL必须安装根证书和服务器证书来认证。
因此:在此环境中,至少必须有三个证书:即根证书,服务器证书,客户端证书
在生成证书之前,一般会有一个私钥,同时用私钥生成证书请求,再利用证书服务器的根证来签发证书。

3、签发证书的问题:我最近找了很多关于openssl的资料,基本上只生成了根证书和私钥及服务器证书请求,并没有真正的实现签证。我这里参考了一些资料,用openssl自带的一个CA.sh来签证书,而不是用MOD_ssl里的sign.sh来签。

用openssl语法来生成证书,有很多条件限定,如目录,key的位置等,比较麻烦,我实验了好几天,最后放弃了。有兴趣的可以参考一下openssl手册。

SSL在Linux下的安装方法:

步骤一:安装openssl和apache
1、到www.openssl.org下载openssl-0.9.7e.tar.gz(目前最新版)
2、卸载掉老的opensll库

#rpm –e –-nodeps openssl

3、解压:

#tar xzvf openssl-0.9.7e.tar.gz

4、进入openssl目录,并安装,用--prefix指定openssl安装目录

#cd openssl-0.9.7e
#./config --prefix=/usr/local/openssl
#make
#make test
#make install

5、安装apache
至www.apache.org/dist下载apache最新版httpd-2.0.52.tar.gz
解压后进入apache目录,根据需要安装需要的模块,我这里装了ssl,rewrite,动态模式安装

#tar zxvf httpd-2.0.52.tar.gz
#cd httpd-2.0.52
#./configure  --prefix=PREFIX   --enable-ssl   --enable-rewrite  --enable-so   --with-ssl=/usr/local/openssl
#make
#make install

步骤二:签证
安装openssl后,在openssl下有一个CA.sh文件,就是利用此文件来签证,
来签三张证书,然后利用这三张证书来布SSL服务器。

1、在/usr/local/apache/conf下,建立一个ssl.crt目录,将CA.sh文件copy至/usr/local/apache/conf/ssl.crt/目录

[root@win ssl]# cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/apache/conf/ssl.crt/CA.sh

2、运行CA.sh -newca,他会找你要CA需要的一个CA自己的私有密钥密码文件。如果没有这个文件?按回车会自动创建,输入密码来保护这个密码文件。之后会要你的一个公司信息来做CA.crt文件。最后在当前目录下多了一个./demoCA这样的目录../demoCA/private /cakey.pem就是CA的key文件啦,./demoCA/cacert.pem就是CA的crt文件了

[root@win ssl.crt]# ./CA.sh -newca

要求输入如下信息:
引用:Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:FUJIAN
Locality Name (eg, city) [Newbury]:FUZHOU
Organization Name (eg, company) [My Company Ltd]:FJJM
Organizational Unit Name (eg, section) []:FD
Common Name (eg, your name or your server's hostname) []:WIN
Email Address []:WIN@WIN.COM

这样就建好了一个CA服务器,有了一个根证书的私钥cakey.pem及一张根证书cacert.pem,现在就可以cacert.pem来给签证了

3、签署服务器证书
生成服务器私钥:

[root@win ssl.crt]# openssl genrsa -des3 -out server.key 1024

生成服务器证书请求

[root@win ssl.crt]# openssl req -new -key server.key -out server.csr

会要求输入信息

Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:FUJIAN
Locality Name (eg, city) [Newbury]:FUZHOU
Organization Name (eg, company) [My Company Ltd]:FJJM
Organizational Unit Name (eg, section) []:FD
Common Name (eg, your name or your server's hostname) []:WIN
Email Address []:WIN@WIN.COM
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:WIN
An optional company name []:WING

最后把server.crt文件mv成newreq.pem,然后用CA.sh来签证就可以了

[root@win ssl.crt]# mv server.csr newreq.pem
[root@win ssl.crt]# ./CA.sh -sign

这样就生成了server的证书newcert.pem
把newcert.pem改名成server.crt

[root@win ssl.crt]# mv newcert.pem server.crt

4、处理客户端:
生成客户私钥:

[root@win ssl.crt]# openssl genrsa -des3 -out client.key 1024

请求

[root@win ssl.crt]# openssl req -new -key client.key -out client.csr

签证:

[root@win ssl.crt]# openssl ca -in client.csr -out client.crt

把证书格式转换成pkcs12格式

[root@win ssl.crt]# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx

5、这时就有了三张证书和三个私钥,一个是demoCA下的根证书,ssl.crt下的服务器证书和客户证书。及demoCA/private下的根 key,ssl.crt下的服务器key和客户key,在conf下的ssl.conf下指定证书的位置和服务器key的位置.

我是在conf下建立一个ssl.crt目录,并将所有的key和证书放到这里

#cp demoCA/cacert.pem cacert.pem

同时复制一份证书,更名为ca.crt

#cp cacert.pem ca.crt

步骤三、编辑ssl.conf

#cd /usr/local/apache/conf


编辑ssl.conf

指定服务器证书位置
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
指定服务器证书key位置
SSLCertificateKeyFile /usr/local/apache/conf/ssl.crt/server.key
证书目录
SSLCACertificatePath /usr/local/apache/conf/ssl.crt
根证书位置
SSLCACertificateFile /usr/local/apache/conf/ssl.crt/cacert.pem
开启客户端SSL请求
SSLVerifyClient require
SSLVerifyDepth  1

启动ssl

/usr/local/apache/bin/apachectl startssl

会要求输入server.key的密码
启动,这样一个默认的SSL服务器及http服务器就启动了,

步骤四、安装和使用证书
把刚才生成的证书:根证书ca.crt和客户证书client.pfx下到客户端,并安装,
ca.crt安装到信任的机构,client.pfx直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器。

使用OpenSSL实现证书的管理:
1、OpenSSL概述
  目前比较流行的认证服务器之一是OpenSSL认证服务器。OpenSSL项目在Eric Young开发的SSLeay包的基础上,开发一个健壮的、商业等级的、开放源码的工具包用强大的加密算法来实现安全的socket层和传输层安全性,这个项目由全世界的志源者管理和开发OpenSSL工具包和相关的文档[6]。它提供了众多而且复杂的API函数,可惜的是,目前它的文档不全,只能够程序员自已多做工作。它的网址是:http://www.openssl.org。

2、为CA创建一个RSA私钥
  #openssl genrsa –des3 –out –ca.key 1024
  系统提示输入PEM pass pharse,也就是密码。生成ca.key文件,可以将文件的属性改为400,并放在安全的地方。

3、利用CA的RSA私钥创建一个自签名的CA证书
  创建一个自签名的证书(Selfsigned certificate)运行req命令,该命令生成一个ca.crt。
  #openssl req –new –x509 –days 3650 –key ca.key –out ca.crt
  然后系统提示输入国家代号、省份名称、城市名称、公司名称、部门名称、你的姓名及Email地址,这样一张自签名的CA证书就制作完成。

4、为客户颁发证书
  为客户创建证书,先用genrsa命令生成的私钥,用req命令生成证书签署请求CSR。
  #openssl genrsa –des3 –out client.key 1024
  #openssl req –new –key client.key –out client.csr这里也要输入个人的信息。
  然后用sign.sh签署证书。
  #./sigh.sh client.crt
  这样由CA签发的证书就制作完成。

5、撤消证书
  要吊消证书可以使用openssl的ca命令,它可以对证书进行吊消、加进CRL及CRL有关的其它一些处理。
  要吊消证书可以简单地使用以下命令:
  #openssl ca –revoke 证书文件名
  这时数据库被更新证书被标记上吊消的标志,需要生成新的证书吊消列表:
  #openssl ca -gencrl -config /etc/openssl.cnf -out crl/sopac-ca.crl
  证书吊消列表文件要在WEB站点上可以使用,必须将crldays或crlhours和crlexts加到证书中:
  openssl ca -gencrl -config /etc/openssl.cnf -crldays 7 -crlexts crl_ext -out crl/sopac-ca.crl

6、证书的更新
  当用户发送他旧的证书证书或要在原有私钥的基础上建新的证书,所以必须吊消旧的证书然后再签发新的证书。要找到证书,可以用户的DN(区别名)在 index.txt文件中查到序列号xx,用cert/.pem做为证书吊消的依据。你必须手动签发证书,因为开始时间和结束时间以便确定新证书的有效性。
  #openssl ca -config /etc/openssl.cnf -policy policy_anything -out newcert.pem -infiles newreq.pem -startdate [now]  -enddate [previous enddate+365days]
  用正确的时间替换 [now]和[previous enddate+365days]。

7、查看证书
  #openssl x509 -in cert.pem -noout –text

8、结束语
  数字证书相当于电子身份证,X.509证书是由CCITT X.509国际标准所规定,目前在电子商务飞速发展的今天应用相当的广泛,交易支付过程中,参与各方必须利用认证中心签发的数码证书来证明各自的身份,数字证书可以进行数字签名,支持不可否认性。电子交易中,无论数字时间戳还是数字证书的发放,都不是靠交易的双方自己来完成,而需要设立一个可靠的第三方机构,进行有效、快速、规范化的认证服务。CA(Certfication Authofity)就是这样一个机构,用openssl论证服务器进行证书发放,证书更新,证书撤销,建立自己的CA论证中心,开发费用低,代码健壮,用强大的加密算法来保证信息传输的安全,它将有力地促进我国电子商务的发展。

转载于:https://www.cnblogs.com/sharmy/archive/2009/03/23/1419861.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置ApacheSSL,您需要进行以下步骤: 1. 找到并打开Apache安装目录下的httpd-ssl.conf文件。在Windows系统中,默认路径是Apache/conf/extra/httpd-ssl.conf。 2. 找到以下参数,并去掉前面的“#”注释符号:LoadModule ssl_module modules/mod_ssl.so和Include conf/extra/httpd-ssl.conf。保存文件并关闭编辑器。 3. 在httpd-ssl.conf文件中,找到<VirtualHost _default_:443>标签,并进行如下配置: - 设置DocumentRoot为您的本地域名指向的文件地址,如"${INSTALL_DIR}/www"。 - 设置ServerName为您的域名和端口,如"www.example.com:443"。确保端口号正确。 - 设置ServerAdmin为您的管理员邮箱。 - 设置ErrorLog和TransferLog为您希望的错误日志和访问日志文件路径。 - 启用SSLEngine。 - 设置SSLCertificateKeyFile和SSLCertificateFile为您的SSL证书和密钥文件路径。 4. 如果在httpd-ssl.conf文件中找到了SSLCertificateChainFile参数并被注释掉了(带有“#”号),请删除注释符号,并将路径替换为您的证书链文件路径。 5. 保存并关闭httpd-ssl.conf文件。 6. 重新启动Apache服务,确保SSL配置生效。 请注意,以上步骤仅涉及到ApacheSSL配置,您还需要获得有效的SSL证书和密钥文件,并按照步骤中指定的路径进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Apache服务器配置SSL证书步骤及问题记录](https://blog.csdn.net/luhn90/article/details/125236502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [关于Apache服务器配置SSL证书的那些事(保姆级教程)](https://blog.csdn.net/m0_65831893/article/details/122161932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值