OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。SSL能使用户/服务器应用之间的通信不被攻击者q听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。
通过OpenSSL提供FTP+SSL/TLS认证功能,并实现安全数据传输 http://www.linuxidc.com/Linux/2013-05/84986.htm
Linux下使用OpenSSL生成证书 http://www.linuxidc.com/Linux/2015-05/117034.htm
利用OpenSSL签署多域名证书 http://www.linuxidc.com/Linux/2014-10/108222.htm
在OpenSSL中添加自定义加密算法 http://www.linuxidc.com/Linux/2015-08/121749.htm
二、安装相应软件包
$ sudo apt-get install apache2 ##安装Apache
$ sudo apt-get install openssl ##安装openssl
$ sudo apt-get install libssl-dev ##安装openssl开发库
$ sudo apt-get install bless ##编辑器使用 bless 十六进制编辑器,需预先安装
三、openssl.cnf简单释义
$ vi /usr/lib/ssl/openssl.cnf
127 [ req_distinguished_name ] 128 countryName = Country Name (2 letter code)##国家名,2个字母代码简称 129 countryName_default = CN ##中国就是CN 130 countryName_min = 2 131 countryName_max = 2 132 133 stateOrProvinceName = State or Province Name (full name)##州或省的名字 134 stateOrProvinceName_default = beijing 135 136 localityName = Locality Name (eg, city) ##本地城市名 137 localityName_default =beijing 138 0.organizationName = Organization Name (eg, company) ##组织(公司)名 139 0.organizationName_default = beijing www company 140 145 organizationalUnitName =Organizational Unit Name(eg,section)##组织单元(部门)名 146 organizationalUnitName_default = www 147 148 commonName = Common Name(e.g.server FQDN or YOUR name)##服务器域名 149 commonName = www.baidu.com 150 commonName_max = 64 151 152 #emailAddress = Email Address ##Email地址 153 emailAddress = [email protected] 154 emailAddress_max = 64 155 156 # SET-ex3 = SET extension number 3 157 158 [ req_attributes ] 159 #challengePassword = A challenge password ##修改密码 160 challengePassword = 161 163 challengePassword_min = 4 164 challengePassword_max = 20
四、成为数字证书认证机构(CA),并为该CA生成证书
①将openssl.cnf配置文件拷贝到当前目录下并创建以下在配置文件中指定的子文件夹
Ubuntu安装OpenSSL
$ sudo ln /usr/lib/ssl/openssl.cnf . $ mkdir demoCA $ cd demoCA $ mkdir certs crl newcerts $ touch index.txt serial ##index.txt为空;
##serial必须写入内容,且为字符串格式的数字(比如1111)
设置好这些后,现在就可以创建和发布证书了
②为自己的 CA 生成自签名证书,这意味着该机构是被信任的,而它的证书会作为 root 证书
$ openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
Ubuntu安装OpenSSL
注:务必记住自己所输入的密码,命令输出的文件存储:ca.key 与 ca.crt 中。文件 ca.key 包括 CA 的私钥,而 ca.crt 包含了公钥证书。
五、为客户生成证书
现在,我们是 root CA 了,可以为客户签数字证书了,客户是www.baidu.com。
①生成公开/私有密钥对
$ openssl genrsa -des3 -out server.key 1024
Ubuntu安装OpenSSL
注:需要提供一个密码来保护你的密钥,密钥会被保存在 server.key 文件中.
②生成证书签名请求 ,一旦公司拥有了密钥文件,它应当生成证书签名请求(CSR)。CSR 将被发送给 CA,CA 会为该请求生成证书(通常在确认 CSR 中的身份信息匹配后)。
$ openssl req -new -key server.key -out server.csr -config openssl.cnf
Ubuntu安装OpenSSL
注:请记住自己的输入
③生成证书。CSR 文件需要拥有 CA 的签名来构成证书(在现实世界中,CSR 文件常常被发送给可信任的 CA 签名)。输入CA的密钥,使用我们自己的 CA 来生成证书:
$ openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
六、在网站中使用PKI
①
$ sudo vi /etc/hosts
127.0.0.1 www.baidu.com
②启动一个拥有之前生成的证书的简单的 web 服务器
$ cp server.key server.pem
$ cat server.crt >> server.pem ##将密钥和证书合并成一个文件
$ openssl s_server -cert server.pem -www ##使用server.pem启动服务器
③默认情况下,服务器会监听 4433 端口。输入https://www.baidu.com:4433
注:提示此连接不受信任是因为我们的CA是自签名的,如是VeriSign 之类的 CA 授权的话就不会出现该情况了。
在这里可以配置让火狐接受我们的自签名(其他浏览器大同小异),配置如下:
菜单--->首选项--->高级--->证书--->查看证书(证书管理器)--->导入--->进入你配置openssl的目录,选择ca.crt--->打开(下载证书)--->勾上“信任使用此CA标识的网站”--->确定,然后刷新网站
SOURCE LINK http://www.linuxidc.com/Linux/2015-10/124001p2.htm