openssl 实战
2016-03-16 16:19
246 查看
一、前言因工作需要,须在某协议栈中支持TLS1.0,以提升协议的安全性。为此,对著名开源库openSSL做一番了解并打算基于其上进行开发。因实际操练过程中,发现网上的资源有许多坑,特记录以备忘,一来自用,二来可能可造福同好。二、相关文档和资源首先找到openssl官网的推荐文档:https://www.feistyduck.com/library/openssl-cookbook/online/本来打算按部就班地学习和进阶,但是不幸的是,或许因为openssl版本更迭步子太快,扯到蛋了,因此我按照步骤总是无法成功。无奈之下,发挥一些小聪明绕开。而我之所以能完成相关操作,也和openssl版本很相关。特声明如下:我的openssl版本为:#opensslversionOpenSSL1.0.1p9Jul2015我的操作系统版本:#lsb_release-aLSBVersion::core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarchDistributorID:RedHatEnterpriseServerDescription:RedHatEnterpriseLinuxServerrelease5.5(Tikanga)Release:5.5Codename:Tikanga三、下载和编译以及安装通常linux已经自带openssl了,我本机的原先就是0.9.8版本(使用opensslversion命令查看),但为了使用一些新的特性,我们可以下载稳定版自行编译和安装。下载:$wgethttp://www.openssl.org/source/openssl-1.0.1p.tar.gz使用tar命令解压后,放到opensslsrc目录。在opensslsrc同级建立一个openssl,作为编译的目标安装目录(假设为/usr/local/openssl)。执行:$cdopensslsrc
$./config\ --prefix=/usr/local/openssl\ --openssldir=/usr/local/openssl\ disable-ec_nistp_64_gcc_128
然后执行:
$makedepend $make $makeinstall至此,在你的/usr/local/openssl里面出现了包含bin,tool等一系列的文件,openssl工具编译安装完成。目录内容类似:
drwxr-xr-x2rootroot4096Jun308:49bin drwxr-xr-x2rootroot4096Jun308:49certs drwxr-xr-x3rootroot4096Jun308:49include drwxr-xr-x4rootroot4096Jun308:49lib drwxr-xr-x6rootroot4096Jun308:48man drwxr-xr-x2rootroot4096Jun308:49misc -rw-r--r--1rootroot10835Jun308:49openssl.cnf drwxr-xr-x2rootroot4096Jun308:49private
四、生成自签名的根CA
按照前述的cookbook进行操作(点击打开链接),会出现坑爹的情况。
1.生成key和csr:
$opensslreq-new\-configroot-ca.conf\-outroot-ca.csr\-keyoutprivate/root-ca.key注意:上述root-ca.conf,千万不要用文档里的那个例子,而必须使用openssl目录里的例子,在其之上,更改相关配置和路径。因为查看出错信息,基本上是说root-ca.conf文件不对。
2.自签名
$opensslca-selfsign\-configroot-ca.conf\-inroot-ca.csr\-outroot-ca.crt\-extensionsca_ext这个命令很可怕,因为会有无数错误,基本上是文件或目录不存在,找不到之类。耐心一点看错误提示,然后对照着将目录和文件建立起来。这个时候touch命令特别管用。
注意配置里的:
database =$dir/db/index #databaseindexfile.
这个配置要求db/index文件以及db/index.attr也必须事先存在。
还有一个问题:-extensionsca_ext
为了这个选项,需要在此前的root-ca.conf里面追加以下内容:
[ca_ext]basicConstraints=critical,CA:truekeyUsage=critical,keyCertSign,cRLSignsubjectKeyIdentifier=hash
相关文章推荐
- OpenLayers 学习(一)创建一个简单的电子地图
- SQOOP可能会导致HDFS分片数量过多的总结
- 树莓派3 CentOS7 下载 Raspberry Pi Model 3 B
- 网易公开课《Linux内核分析》学习心得-使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- hadoop2.4.1源码在64位系统编译过程中遇到的几个错误及解决方法
- Linux sed指令
- Linux同步工具:rsync
- Nginx分发高级配置
- 《高性能网站建设指南》读后感
- linux终端下查看当前操作系统版本信息
- Hadoop数据压缩
- apache2.2下编译安装php5.6
- Arch Linux安装中文输入法
- 浅谈WebLogic和Tomcat
- linux(centos)搭建SVN服务器
- Linux Shell特殊字符和控制字符大全
- Linux内存管理误区问答总结
- 未安装nginx输入ip直接访问工程
- Linux内核Crash分析
- Linux笔记(47)——shell运算符