1.数据的保密性
openssl 实际在真正的数据加密上使用的是对称算法,一个密钥既用来加密也用来解密。我们在公开的网络介质上传输的再不是明文,即使有人能截获这些数据,没有密钥也是很难进行解密的。
2.数据的完整性
openssl 对数据用 hash 算法一个消息文摘,然后用对方的公钥对消息文载做数字签名,消息文摘的加密使用的是非对称算法。然后消息文摘和数据一起传给接收方,接收方用自己的密钥先对数字签名进行解密,这样就保证了数据的完整性。
从下面的站点可以获得 openssl:
http://www.openssl.org/
编译安装以后还要执行下面几个命令:
[root@sound openssl-0.9.5a]# mv /etc/ssl/misc/* /usr/bin/
[root@sound openssl-0.9.5a]# install -m 644 libRSAglue.a /usr/lib/
[root@so. openssl-0.9.5a]# install -m 644 rsaref/rsaref.h /usr/include/openssl/
"/etc/ssl/openssl.cnf"是 openssl 的主配置文件,里面要改动的主要是[CA_default ] 和[ req_distinguished_name ] 两个部分。
如果你想要使用 "openssl ca" 这个命令做 CA 证书时时,你需要建立一个 "sign.sh" 的脚本,这个脚本实际是存在的,在"/usr/bin/sign.sh", 您所要做的是在这个文件中加入一些东西。在 mod_ssl 的发行版中您也可以找到这个脚本。
下面我们举个例子讲述 openssl 的应用,我们用自己的 CA 为自己的 apache web server 做一个证书来签名我们自己的证书签名请求(CSR)。
1.为 apache web server 建立一个有密码保护的RSA私钥
[root@sound ssl]# openssl genrsa -des3 -out server.key 1024
2.用上面的 RSA 私钥产生一个证书签名请求(CSR)
[root@sound ssl]# openssl req -new -key server.key -out server.csr
3.为我们自己的 CA 创建一个 RSA 私钥
[root@sound ssl]# openssl genrsa -des3 -out ca.key 1024
4.用 CA 的 RSA 密钥做一个自签名的 X509 格式的证书
[root@sound ssl]# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
5.将上面产生的私钥和证书移动到合适的目录下
[root@deep ssl]# mv server.key private/
[root@deep ssl]# mv ca.key private/
[root@deep ssl]# mv ca.crt certs/
6.最后用我们自己的 CA 对证书签名
[root@sound ssl]# /usr/bin/sign.sh server.csr
更详细的信息请参考 man 帮助和程序自带的帮助。
八.Linux FreeS/WAN VPN
对于客户端与服务器之间的通讯用SSL进行加密是一个很好的选择,但是很多情况下需要建立一种企业级的通讯通道。在两个网关之间的 Internet上点到点的传递极其私密的数据,出于这种加密和认证的需要,IPSEC 应运而生。
IPSEC 是 Intenet 协议安全,它使用很强的密码系统提供认证和加密服务。IPSEC 在 IP 层进行加密,所以它对链路层的依赖型不大。它可以工作在各种底层网络上。IPSEC 可以为 IP 层以上的协议提供保护。对于用户来说,这种保护看起来是透明的。
IPSEC 可以提供在两个网关之间的不安全的互联网上的安全通道的这种能力。在这种通道中传送的数据都是要求保密性非常高的数据,数据在发送者的网关处加密,在接收者的网关处解密。这就是 VPN(Virtual Private Network)。Freeswan 就是在 Linux 下实现 IPSEC 的工具。
您可以到下面的站点下载 freeswan:
http://www.freeswan.org/
由于 freeswan 是以内核补丁形式提供的,所以您必须先下载 Linux 内核,再下载对应于内核的 freeswan。我们先要根据自己的系统情况修改 freeswan 的 Makefile 文件,然后用下面的命令进行编译,并且把 freeswan 加入到 Linux 内核的源代码中:
[root@sound freeswan-1.3]# make insert
[root@sound freeswan-1.3]# make programs
[root@sound freeswan-1.3]# make install
然后我们就需要编译内核,这里不想再介绍如何编译内核,只提示要改变的内核选项,下面这些选项您都要确定选"Y":
IPSec options (FreeS/WAN)
IP Security Protocol (FreeS/WAN IPSEC) (CONFIG_IPSEC) [Y/n/?]
IPSEC: IP-in-IP encapsulation (CONFIG_IPSEC_IPIP) [Y/n/?]
IPSEC: PF_KEYv2 kernel/user interface (CONFIG_IPSEC_PFKEYv2) [Y/n/?]
IPSEC: Enable ICMP PMTU messages (CONFIG_IPSEC_ICMP) [Y/n/?]
IPSEC: Authentication Header (CONFIG_IPSEC_AH) [Y/n/?]
HMAC-MD5 authentication algorithm (CONFIG_IPSEC_AUTH_HMAC_MD5) [Y/n/?]
HMAC-SHA1 authentication algorithm (CONFIG_IPSEC_AUTH_HMAC_SHA1) [Y/n/?]
IPSEC: Encapsulating Security Payload (CONFIG_IPSEC_ESP) [Y/n/?]
3DES encryption algorithm (CONFIG_IPSEC_ENC_3DES) [Y/n/?]
IPSEC Debugging Option (DEBUG_IPSEC) [Y/n/?]
一些内核选项会被 freeswan 自动打开,即使这些选项原来是关闭的。尽管这样还是建议您不要关闭下面的选项:
Kernel/User netlink socket (CONFIG_NETLINK) [Y/n/?]
Netlink device emulation (CONFIG_NETLINK_DEV) [Y/n/?]