OpenSSL介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
标题:【翻译】(Ubuntu文档)OpenSSL
本文档用于介绍SSL应用层协议,特别是OpenSSL对SSL的实现。举例详细介绍了在Client-Server环境下OpenSSL的使用。最后,通过例子展示了如何在Apache上使用OpenSSL以提供Https服务。
读者应熟练使用命令行,bash,修改配置文件。
OpenSSL简介:
SSL也即Secure Socket Layer,是由网景公司为了传输敏感数据而提出的协议。SSL使用私钥加密传输的数据,防止被窃听。SSL最普遍的使用适合和浏览器结合使用,但是其他很多的应用也可以使用SSL。一般而言,使用了SSL的URL以https开头。
OpenSSL是广泛使用的商业级SSL工具,由Eric A. Young和Tim J.Hudson开发的库SSLeay。
X.509是ITU-T发布的数字证书规范。它规定了确定个人或计算机系统身份确认所需的信息和属性,用于安全管理和发布英特网的数字签名证书。OpenSSL广泛应用X.509。
OpenSSL使用
安装:首先使用如下命令确定Ubuntu可用的SSL版本:
apt-cache search libssl | grep SSL
应该看到如下结果:
libssl0.9.6 - SSL shared libraries (old version)
libssl-dev - SSL development libraries, header files and documentation
libssl0.9.7 - SSL shared libraries
可能还需要安装ca-certificate.
若需要OpenSSL的通用库,还需安装libssl-dev.
基本OpenSSL命令
确定OpenSSL的版本: openssl verion
OpenSSL的可用命令: openssl help
为查找某一命令的帮助,在命令后加-h,如 openssl enc -h
列出所有可用的加密算法: openssl ciphers -v
使用openssl speed可以查看本机的openssl速度,查看每个算法美妙的加密字节数,以及sign/verify的时间
SSL证书
该部分介绍SSL证书的产生,包括用于支持SSL的服务应用的自签名和公认签名,以及用于客户程序的X.509签名。
服务器SSL证书
生成X.509证书后,有三种方式进行签名:自签名,生成CA以及由公认的CA机构签名。证书签名后,便可用于OpenSSL、连接LDAP的SSL通道以及HTTP服务器。该部分用于介绍证书的生成和签名。
生成并自签名证书
自签名证书的好处是使用方便,按需生成。当然,仅适用于封闭式的测试用途。使用自签名证书的缺点是用户的浏览器或应用,在连接使用自签名的HTTP服务器时总会报警。浏览器如firefox在默认情况下对公认可信的CA不会报警,但是在导入服务器的根证书后,也可以抑制警告。但一般而言,自签名的证书不推荐用于公共应用。(若要用于e-commerce,公认签名证书不可少哦。)
在安装了OpenSSL之后,生成X.509证书就非常简单了。对于自签名证书,首先必须建立CA:
1. 创建初始工作环境,譬如在home目录,
cd && mkdir -p myCA/signedcerts && mkdir myCA/private && cd myCA
创建并进入myCA,同时生成两个子目录 signedcerts和private
myCA用于存放CA证书,证书数据库,生成的证书,密钥以及请求
signedcerts:保存签名证书的copy
private: 包含私钥
2. 在myCA中创建证书库:
echo '01'>serial && touh index.txt
然后创建f文件。sudo nano ~/myCA/f 内容如下:
# My sample f file.
#
# Default configuration to use when one is not provided on the command line.
#
[ ca ]
default_ca = local_ca
#
#
# Default location of directories and files needed to generate certificates.
#
[ local_ca ]
dir = /home/
certificate = $dir/cacert.pem
database = $dir/index.txt
new_certs_dir = $dir/signedcerts
private_key = $dir/private/cakey.pem
serial = $dir/serial
#
#
# Default expiration and encryption policies for certificates.
#
default_crl_days = 365
default_days = 1825
default_md = md5
#
policy = local_ca_policy
x509_extensions = local_ca_extensions