`

OPENSSL-转载

阅读更多
一、OpenSSL简单介绍
    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
    SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。SSL能使用户/服务器应用之间的通信不被攻击者q听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。

二、安装相应软件包
1
2
3
4
$ 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简单释义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$ 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                    = admin@baidu.com
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配置文件拷贝到当前目录下并创建以下在配置文件中指定的子文件夹
wKioL1XLAHGgHZ-bAAAxI0QjDoQ917.jpg
1
2
3
4
5
6
$ 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 证书
1
$ openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
wKioL1XMgjmzuePLAAIMibR5cAY144.jpg

注:务必记住自己所输入的密码,命令输出的文件存储:ca.key 与 ca.crt 中。文件 ca.key 包括 CA 的私钥,而 ca.crt 包含了公钥证书。

五、为客户生成证书
   现在,我们是 root CA 了,可以为客户签数字证书了,客户是www.baidu.com。

①生成公开/私有密钥对
1
$ openssl genrsa -des3 -out server.key 1024
wKioL1XMW1zzV0dtAACZBmrhAuo779.jpg
注:需要提供一个密码来保护你的密钥,密钥会被保存在 server.key 文件中.

②生成证书签名请求 ,一旦公司拥有了密钥文件,它应当生成证书签名请求(CSR)。CSR 将被发送给 CA,CA 会为该请求生成证书(通常在确认 CSR 中的身份信息匹配后)。
1
$ openssl req -new -key server.key -out server.csr -config openssl.cnf
wKioL1XMgtjxs5sgAAH--YlDios531.jpg
注:请记住自己的输入

③生成证书。CSR 文件需要拥有 CA 的签名来构成证书(在现实世界中,CSR 文件常常被发送给可信任的 CA 签名)。输入CA的密钥,使用我们自己的 CA 来生成证书:
1
$ openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
wKiom1XMgavT0UWAAAIciHAz7XE481.jpg

六、在网站中使用PKI

1
2
$ sudo vi /etc/hosts
127.0.0.1    www.baidu.com


②启动一个拥有之前生成的证书的简单的 web 服务器
1
2
3
$ cp server.key server.pem
$ cat server.crt >> server.pem           ##将密钥和证书合并成一个文件
$ openssl s_server -cert server.pem -www    ##使用server.pem启动服务器
wKioL1XMhc3TudBFAABFzpRo7BQ305.jpg

③默认情况下,服务器会监听 4433 端口。输入https://www.baidu.com:4433
wKiom1XMhEjxcDYVAAENZ8Ql08Q080.jpg
注:提示此连接不受信任是因为我们的CA是自签名的,如是VeriSign 之类的 CA 授权的话就不会出现该情况了。

在这里可以配置让火狐接受我们的自签名(其他浏览器大同小异),配置如下:
菜单--->首选项--->高级--->证书--->查看证书(证书管理器)--->导入--->进入你配置openssl的目录,选择ca.crt--->打开(下载证书)--->勾上“信任使用此CA标识的网站”--->确定,然后刷新网站
wKioL1XMid6A4szLAAHDtla8VIY255.jpg
wKiom1XMh_jhdOeZAACAdYWbHR4356.jpg
wKiom1XMiK-TN9DIAAMzHLcknBw855.jpg
wKiom1XMiTWBW8rKAAC_H5U9ipQ638.jpg
分享到:
评论

相关推荐

    openssl-1.1.1d.rar

    版权声明:本文为CSDN博主「沧海一笑-dj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/dengjin20104042056/article/details/131030516

    OPENSSL库的使用-DES篇 - duanxingheng的专栏 - CSDN博客.pdf

    同时,文档提到了在使用DES算法时,不能随意转载博主的原创文章,体现了对知识产权的尊重。 总结而言,上述内容涵盖了DES算法的基本概念、工作模式、安全性的优劣比较、以及如何在OpenSSL库中实际应用DES算法进行...

    Window xp 下安装 openssl

    Window xp 下安装 openssl 首先声明,我到现在还不知道为什么会安装成功,因为还是没有发现configure 这个文件夹只发现一个configure 可打开文件。就是不停的试,在试的过程中,最后还是被我安装成功了,而这个...

    转载:已编译好的openssh库

    可以直接用别人做好的windows OpenSSL 安装包(我用的是0.9.8j版), 可以从 http://www.slproweb.com/products/Win32OpenSSL.html 下载 OpenSSL for Windows,直接安装。 P.S. OpenSSL for Windows 的源代码有...

    xen实践手册(转载)

    在编译Xen之前,确保系统已经安装了必要的编译工具和库文件,如`gcc`, `glib-dev`, `openssl-devel`等。你可以使用`yum install`命令批量安装这些依赖。在确保所有必备软件包就绪后,执行配置、编译和安装步骤: ...

    bcprov加密库

    org.bouncycastle.openssl.PEMException: problem parsing ENCRYPTED PRIVATE KEY: java.lang.SecurityException: JCE cannot authenticate the provider BC ...版权声明:本文为博主原创文章,转载请附上博文链接!

    RSA加密(网上转载)

    C++和Java都提供了相应的库来支持RSA加密,例如OpenSSL库在C++中,Java则内置了java.security包,包含KeyPairGenerator、Cipher等类,方便开发者进行RSA的密钥生成和加解密操作。 总结来说,RSA加密是一种基于大数...

    BB1407openwrt-RG100A_DB120-squashfs-cfe.bin

    要想这个同步脚本正常运行,系统必须安装libcurl,openssl,perl,以及perl包,在openwrt上所需的perl包名称如下: perl perlbase-essential perlbase-digest perlbase-base perlbase-utf8 perlbase-encode ...

    phpstudy Apache PHP MySQL phpMyAdmin ZendOptimizer

    该程序转载他人,希望帮学习PHP的朋友有所帮助。我找了很久,这个东西。希望大家喜欢。 该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试...

Global site tag (gtag.js) - Google Analytics