使用ssl加密http协议

使用mod_ssl模块,使Apache可以使用SSL协议加密HTTP协议,用来保护HTTP会话。

最简洁的配置样例:

<VirtualHost _default_:443>
ServerName    www.bsdmap.com
DocumentRoot  /opt/httpd/htdocs
SSLEngine      on
SSLCertificateFile        /opt/httpd/conf/ssl/www.bsdmap.com.cert
SSLCertificateKeyFile   /opt/httpd/conf/ssl/www.bsdmap.com.key
</VirtualHost>

SSLEngine                 ON 启动SSL引擎
SSLCertificateFile       指定证书
SSLCertificateKeyFile  指定相关密钥

使用SSL加密分为正式场合,比如网上银行、支付宝等对应用安全要求较高的应用上;另一个为非正试场合,比如自己也可以配置一个SSL的web服务。区别在于,正式场合https应用使用的SSL证书是经过第三方数字签名的,而非正式应用,则是非正式机构或者是自己制作、签名的。

成生密钥对儿:

在创建证书之前,要有一个共公/私有密钥对儿。以www.bsdmap.com为例:

openssl genrsa -des3 -rand file1:file2:file3 -out www.bsdmap.com.key 1024

genrsa:告诉openssl要生成一个RSA的密钥对儿。

des3:表示私钥应该被一个”pass phrase”编码和保护。

rand:给OpenSSL提供任意的、随机的数据以确保生成的密钥是唯一的和不可预知的。这个开关在Windows里没有必要,在Windows下使用其他的方式获得随机数据。

out:保存位置。

1024:密钥位数。

当使用了-des3选项,成生了受“口令”保护的密钥对儿时,启动apache时需要输入口令才能启动。假如不想要每次都输入“口令”(不安全),可以使用不受“口令”保护的密钥,去掉-des3选项即可,也可以使用下面的命令转换一下:

openssl rsa -in www.bsdmap.com.key -out www.bsdmap.com.key.nopassword

显示密钥文件的信息:

openssl rsa -noout -text -in www.bsdmap.com.key

该命令也可用于查看ssh-key的信息,其实质是一样的。

 

创建一个证书签署请求(正式应用场合):

正式场合的应用,需要一个经证书颁发机构签署的证书,为此,我们先成生一个证书,提交由第三机构签名认证。使用命令:

openssl req -new -key www.bsdmap.com.key -out www.bsdmap.com.csr

需要填写一些地域、组织机构类的信息。需要特殊说明的是:在一个网站站书里,Common Name (eg, YOUR name)一栏标识完全限定的域名(FQDN),假如此处与以后使用证书的站点名不同,浏览器将发布一个错误,无法访问。

完成之后,证书就存储在www.bsdmap.com.csr里。下面的命令可以显示这个证书的信息:

openssl req -noout -text -in www.bsdmap.com.csr

然后,可以所这个证书签署请求提交给一个CA(证书签署机构)处理。

Verisign和Thawte是两家可以选择的CA:

https://digitalid.verisign.com/server/apacheNotice.htm

https://www.thawte.com/ssl-digital-certificates/buy-ssl-certificates/

创建自签署证书(非正式应用场合):

非正式的应用,可以自己签署自己的证书:

openssl x509 -req -days 365 -in www.bsdmap.com.csr -signkey www.bsdmap.com.key -out www.bsdmap.com.cert

并且,必须使用:chmod 400 www.bsdmap.com.key 来保护密钥文件。

另一个问题:

貌似SSL不能与基于主机名的虚拟主机一同工作。

有一个协议把一个已有的HTTP连接升级到TLS,但是并不是所有的浏览器支持此项功能(RFC 2817)。

参考:
SSL原理解析

http://www.yesky.com/ServerIndex/77125243130347520/20040426/1791592.shtml

SSL原理解密

http://fanqiang.chinaunix.net/a6/b8/20010608/121000441.html

Tags: , , , ,

Leave a comment