如何在本地配置openssl 编译配置

使用OpenSSL工具制作X.509证书的方法及其注意事项总结
如何使用OpenSSL工具生成根证书与应用证书
一、步骤简记
// 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认)
openssl req -new -x509 -days 3650 -keyout CARoot1024.key -out CARoot1024.crt
// 为顶级CA的私钥文件去除保护口令
openssl rsa -in CARoot1024.key -out CARoot1024.key
// 生成顶级CA的公钥证书和私钥文件,有效期15年(RSA 2048bits,指定)
openssl req -newkey rsa:2048 -x509 -days 5480 -keyout CARoot2048.key -out CARoot2048.crt
// 为顶级CA的私钥文件去除保护口令
openssl rsa -in CARoot2048.key -out CARoot2048.key
// 为应用证书/中级证书生成私钥文件
openssl genrsa -out app.key 2048
// 根据私钥文件,为应用证书/中级证书生成 csr 文件(证书请求文件)
openssl req -new -key app.key -out app.csr
// 使用CA的公私钥文件给 csr 文件签名,生成应用证书,有效期5年
openssl ca -in app.csr -out app.crt -cert CARoot1024.crt -keyfile CARoot1024.key -days 1826 -policy policy_anything
// 使用CA的公私钥文件给 csr 文件签名,生成中级证书,有效期5年
openssl ca -extensions v3_ca -in app.csr -out app.crt -cert CARoot1024.crt -keyfile CARoot1024.key -days 1826 -policy policy_anything
以上是生成根证书与应用证书过程中要用到的所有命令,根据生成目标不同,分为三组。其中,前面两组都用于生成自签名的顶级CA(区别只在于密钥长度不同),实际应用中只需根据需求选择一组即可。
最后一组用于生成非自签名的证书,包括中级证书与应用证书。所谓中级证书,是具有继续颁发下级证书权限的子CA,而本文中所说的应用证书,特指不能用来继续颁发下级证书,只能用来证明个体身份的证书。顶级CA在签发二者的时候,只是多少一个 -extensions v3_ca 选项的区别,这个选项赋予被签发的证书继续签发下级证书的权力。
二、各步详解
2.1 生成自签名根证书(即顶级CA)
典型示例:openssl req -new-x509 -days5480 -keyoutCA.key -outCA.crt
[1] 命令选项和参数解读
示例中,各选项(及参数)的意义如下:
使用openssl的req子命令
生成新的证书请求
生成自签名证书
-days 5480
自签名证书的有效期5480天(15年)【仅当使用了 -x509 选项后有效】
-keyout CA.key
私钥文件名指定为CA.key【若为运行前就已有的私钥文件且原名不是CA.key,则改名为CA.key;否则新生成的私钥文件命名为CA.key】
-out CA.crt
指定输出所生成自签名证书的信息到文件,且文件名为CA.crt【建议不要省略】
其中,-days,-keyout 两个选项可以省略,省略的话使用默认值,有效期默认为 30 天【由程序内部在变量初始化的时候指定,与配置文件无关】,私钥文件名的默认值由配置文件 f 中相关条目指定,没改过的话为 privkey.pem。
选项 -out 若是省略的话,openssl不会以文件形式输出生成的 证书/证书请求,而是会默认将文件的信息直接打印到屏幕上,这在大多数情况下,是不符合我们要求的。所以建议这个选项最好不要省略!
req子命令可以通过 -key 选项为证书请求指定使用一个已存在的私钥文件。但在示例中的情况下,虽然使用了-new 和 -x509两个选项,但没有使用 -key 选项,这时,req子命令会自动为自签名证书生成一个RSA私钥,密钥长度的默认值由配置文件 f 中的相关条目指定,没改过的话为 1024 bits。
[2] 关于私钥文件口令的指定
运行中会提示输入加密口令,如下:
writing new private key to 'CA.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
此口令用于加密私钥文件 CA.key 中的私钥信息,如果不想在运行过程中还要输入加密口令,则可以使用选项 -passout 在命令中直接指定。选项 -passout 的使用形式为:
-passoutarg
其中,arg是选项 -passout 的参数,其格式有多种,详参《OpenSSL官方文档》中关于&PASS_PHRASE_ARGUMENTS&的介绍。
本小节典型示例中的命令,可以用选项 -passout 改造如下:
openssl req -new-x509 -days5480 -keyoutCA.key -out CA.crt-passoutpass:1314
由于中可以使用history命令查看历史指令记录,所以出于安全方面的考量,一般如非必要,不建议在命令中直接指定口令。这与登录的时候不在 -p 选项里直接指定登录口令的原因是一致的。
[3] 关于证书请求文件中的DN字段
运行中会提示输入一些 Distinguished Name fields,即证书的识别名信息字段,简称为DN字段,如下:
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [GB]:US
State or Province Name (full name) [Berkshire]:California
Locality Name (eg, city) [Newbury]:
Organization Name (eg, company) [My Company Ltd]:GeoAuth Inc.
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:Authentication Global Root
Email Address []:.
这些DN字段大部分有默认值,默认值由配置文件 f中相关条目指定。如要在某一个DN字段使用默认值,则无需输入任何信息,直接点击&Enter&键;如果确实某个DN字段的值要置为空,则输入一个 '.' 后,点击&Enter&键。
这些DN字段主要是拿来识别证书持有者身份的,下表是关于它们的缩写、说明和一些填写说明。【此部分参考了互动百科的SSL条目】
Country Name
证书持有者所在国家
要求填写国家代码,用2个字母表示
State or Province Name
证书持有者所在州或省份
填写全称,可省略不填
Locality Name
证书持有者所在城市
可省略不填
Organization Name
证书持有者所属组织或公司
最好还是填一下
Organizational Unit Name
证书持有者所属部门
可省略不填
Common Name
证书持有者的通用名
对于非应用证书,它应该在一定程度上具有惟一性;
对于应用证书,一般填写服务器域名或通配符样式的域名。
Email Address
证书持有者的通信邮箱
可省略不填
表2-1 DN字段的说明
注:表中所谓,证书不是应用证书时,其持有者的通用名要有&唯一性&,是指其通用名不要与一般主机上常见的信任证书列表或撤销证书列表中的证书产生重复。
如果不想在运行过程中逐个输入这些DN字段的值,则可以使用 -subj 选项在命令中直接指定。选项 -subj 的使用形式为:
其中,arg是选项 -subj 的参数,其格式类似于:/type0=value0/type1=value1/type2=... 形式。每一个 /type=value 形式的单元,都对应了一个完整的DN字段。其中,
/ 是每一个DN字段的开始标志;type0、type1等等,就是表2-1中提到的DN字段名的缩写;=是DN字段的名和值之间的间隔符;
value0、value1等等,就是原本你要在运行过程中逐个输入的DN字段的值。
对于您要将值置为空的DN字段,您可以略去不写。本小节典型示例中的命令,可以用 -subj 选项改造如下【略去了 L 与 OU 两个DN字段】:
openssl req -new-x509 -days5480 -subj/C=US/ST=California/O=GeoAuth\ Inc./CN=Authentication\ Global\ Root -keyout CA.key -out CA.crt
需要特别注意的是,如果您设定的DN字段的值如果存在一些特殊字符【比如 (空格)、((半角左括号)、)(半角右括号)&&】,必须经过\(反斜杆)转义。上例中已经给出了空格转义的情况。
[4] 如何指定自签名证书的密钥长度和类型
如前所述,示例只能生成密钥长度为1024bits的RSA公私钥对。如果要生成密钥长度不为1024bits的RSA公私钥对,或是其他类型的【比如DSA、EC】公私钥对,则必须使用选项 -newkey 来代替 -new 。选项 -newkey 的用法比较复杂,如需详细了解,请参看《OpenSSL官方文档》的相关页面。本小节典型示例中的命令等效于以下命令:
openssl req -newkeyrsa:1024 -x509 -days5480-keyoutCA.key -outCA.crt
要生成一个密钥长度为2048bits的RSA公私钥对,命令为:
openssl req -newkeyrsa:2048 -x509 -days5480-keyoutCA2048.key -outCA2048.crt
2.2 为顶级CA的私钥文件去除加密保护
上节提到,顶级CA的私钥文件是经过加密保护的,以后每当需读取 CA.key 文件中的私钥信息时,都需输入解密口令。这种做法适合有安全需求的场合,但如果觉得不方便,也可以去除这个口令。
典型示例:openssl rsa -inCA.key -outCA.key
[1] 命令选项和参数解读
示例中,各选项/参数的意义如下:
使用openssl的rsa子命令
-in CA.key
经加密保护的私钥文件
-out CA.key 解除加密保护后的私钥文件【可以改名】
[2] 关于私钥文件解密口令的指定
运行中会提示输入解密口令,如下:,
Enter pass phrase for CA.key:
writing RSA key
如果不想在运行过程中还要输入解密口令,则可以使用选项 -passin 在命令中直接指定。选项 -passin 的使用形式为:
-passinarg
其中,arg是选项 -passin 的参数,其格式同选项 -passout 的参数,详参《OpenSSL官方文档》中关于&PASS_PHRASE_ARGUMENTS&的介绍。
本小节典型示例中的命令,可以用选项 -passin 改造如下:
openssl rsa -inCA.key -out CA.key -passin pass:1314
基于同选项 -passout 一样的考量,一般不建议直接在命令中指定解密口令。
[3] rsa子命令的实际功能
rsa子命令的功能,更完整来说,应该是RSA密钥的管理。除了此处用到的去除加密保护,还可以用来:更换加解密口令,更换加解密算法【DES、三重DES、IDEA(官方文档上提到过,但是有些版本好像不支持,比如说我安装的)、AES(官方文档上没提到,我安装的版本支持)】,更换密钥文件的编码方式,等等。
2.3 为应用证书/中级证书生成私钥文件
典型示例:openssl genrsa-outapp.key 2048
[1] 命令选项和参数解读
示例中,各选项/参数的意义如下:
使用openssl的genrsa子命令
-out app.key 指定输出生成的私钥信息到文件,且文件名为app.key【建议别省略】
指定所生成私钥的比特长度【务必放在最后一个】
其中,选项 -out 若是省略的话,openssl不会以文件形式输出生成的 私钥信息,而是会默认将私钥的信息直接打印到屏幕上,这不符合我们的要求。所以建议这个选项不要省略!
genrsa子命令还可以有其他一些选项及参数,但不论还有多少选项,都必须把指定私钥长度的参数放在最后一个。【如果指定私钥长度的参数不是最后一个,则其后的参数好像会被舍弃。】
[2] 私钥文件的加密保护
本小节典型示例所给出的命令,生成的是未经任何加密保护的私钥文件。这种方式用起来比较方便,但非常不安全。如果要为私钥文件附加加密保护,则有两种方式:
A.在生成私钥文件的同时就指定输出前要用某种加密算法加密保护;
B.生成明文的私钥文件后用 rsa 子命令附加某种加密算法的加密保护。
我计算机上安装的openssl版本,在两种方式下都支持这些加密算法选项:-des,-des3,-aes128,-aes192,-aes256。以加密选用192位的AES算法为例,命令如下:
// 在生成私钥文件的同时就指定输出前要用192位的AES算法加密保护
openssl genrsa -aes192 -out app.key 1024
// 生成明文的私钥文件后用 rsa 子命令附加192位的AES算法加密保护
openssl rsa -aes192 -in app.key -out app.key
上例中的两个命令,都会要求在运行中输入加密口令。同样的,虽然不建议,但是openssl依然支持在命令中使用选项 -passout 指定加密口令,选项 -passout 的用法参考2.1小节。唯一需要额外注意的是,对于genrsa子命令,选项 -passout 应放在 指定密钥长度的参数 前面。
2.4 为应用证书/中级证书生成 csr 文件【证书请求文件】
典型示例:openssl req -keyapp.key -out app.csr
[1] 命令选项和参数解读
示例中,各选项/参数的意义如下:
使用openssl的req子命令
生成新的证书请求
-key app.key
指定是为app.key文件中的私钥生成证书请求
-out app.csr
指定输出所生成证书请求的信息到文件,且文件名为app.csr
这和2.1节使用的是openssl的同一个子命令,所以参数的意义很多具有共通性。命令运行中也会要求输入一些DN字段的值,参看本文2.1 [3] 中的相关介绍。同样的,可以使用-subj选项在命令中直接指定这些DN字段的值。
2.5 为 csr 文件签名,生成应用证书/中级证书
典型示例:openssl ca-inapp.csr -outapp.crt -certCA.crt -keyfileCA.key -days1826 -policypolicy_anything
[1] 命令选项和参数解读
示例中,各选项/参数的意义如下:
使用openssl的ca子命令
-in app.csr
指定待签发证书的 CSR文件为 app.csr
-out app.crt
指定输出所签发证书的信息到文件,且文件名为app.crt【建议不要省略】
-cert CA.crt
指定为应用/中级证书签名的CA的公钥证书为CA.crt【用到CA证书的持有者信息】
-keyfile CA.key
指定为应用/中级证书签名的CA的私钥文件为CA.key【用CA私钥实际执行签名】
-days 1826
指定所签发证书的有效期为1826天(5年)
-policy policy_anything
指定签发策略为 policy_anything 【即,允许所签发证书的持有者信息和颁发者信息之间不遵守任何匹配策略】
其中,选项 -out 若是省略的话,openssl不会以文件形式输出生成的 应用证书/中级证书信息,而是会默认将证书的信息直接打印到屏幕上,这一般不符合我们的要求。所以建议这个选项不要省略!
[2] 关于签发策略
留待下次补充。先参看这这篇吧,/mars208/item/3bdd49
[3] 关于签发中级证书(二级/三级CA,子CA)
留待下次补充。先参看这这篇吧,http://blog.chinaunix.net/uid-311680-id-2973653.html
三、常见问题及其解决
留待下次补充。
四、主要的一些参考资料
主要的信息来源是以下三个:
《OpenSSL》(赵春平 著)【一本难得的中文资料,未出版】
《OpenSSL官方文档---OpenSSL命令》
《互动百科---SSL》
一些前辈的博文,也对我快速定位问题提供了很大的帮助,列举如下:
博客园 - rusty,《Openssl使用生成CA总结》 ,谈到了成功运行以上命令需要提前建好一些目录和文件
百度空间 - mars208,《使用openssl创建CA》,提到了签发策略的问题
ChinaUnix - ehyyngp,《使用openssl签发证书》,提到了中级证书的签发问题Windows一键安装OpenSSL
Windows一键安装OpenSSL:OpenSSL在github 上有开源项目,我们只需要把代码克隆到本地,在本地编译一下就好了。
1-&在github上获取,必须要安装 git for windows,网址 https://git-for-windows.github.i
2-&OpenSSL 的配置文件需要 Perl 语言来解析,所以本地电脑需要安装 Perl 脚本运行环境
perl 官网下载地址 : https://www.perl.org/get.html ,下载后安装 Perl,安装目录可自定义,程序会自动配置好环境变量。
3-&选择你想安装 OpenSSL 的目录,在里面建一个批处理文件(比如 werwer.bat),输入以下内容:
echo off & color 0A
:: 项目名称
set PROJECT=openssl
:: 版本标签 github上可查 :/openssl/openssl/releases
set VESION=OpenSSL_1_1_0-pre5
:: 项目路径
set PROJECT_PATH=%cd%
:: 代码存放路径
set CODE_PATH=&%PROJECT_PATH%\%PROJECT%_%VESION%&
:: github openssl 项目网址
set OPENSSL_GIT_URL=/openssl/openssl.git
::安装路径
set OPENSSL_INSTALL_DIR=%cd%
::从github上按照指定版本拉取源码
if not exist &%CODE_PATH%& (
git clone -b %VESION% /openssl/openssl.git %CODE_PATH%
cd /d &%CODE_PATH%&
::通过perl脚本根据配置生成makefile
perl Configure VC-WIN32 --prefix=%OPENSSL_INSTALL_DIR% no-asm
:: 设置VS工具集目录,取决于电脑中VS安装路径
set VS_DEV_CMD=&D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\VsDevCmd.bat&
call %VS_DEV_CMD%
nmake -f makefile
:: 测试(可选)
nmake test
nmake install
等待脚本执行结束,openssl 就安装好了,包括可执行文件,头文件,静态库,例如:今天首次接触安装OpenSSL与openssh,命令如下:
1、将192.168.100.14下的/home/zx/soft/openss*.tar.gz移动到本服务器的/home/zx目录下 & &
scp zx@192.168.100.14:/home/zx/soft/openss*.tar.gz&/home/zx
2、解压openssl-1.0.2j.tar.gz文件
tar -zxvf openssl-1.0.2j.tar.gz
3、解压tar -zxvf openssh-7.5p1.tar.gz
tar -zxvf openssh-7.5p1.tar.gz
4、到/home/zx/openssl-1.0.2j/目录下
/home/zx/openssl-1.0.2j/
5、shared创建共享库 &zlib调用动态库(配置时调用zlib库?)生成Makefile文件
./config shared zlib
6、编译并安装文件
make && make install/
7、重命名系统自带的OpenSSL文件为备份文件
mv /usr/bin/openssl /usr/bin/openssl.bak && mv /usr/include/openssl &/usr/include/openssl.bak
8、将新生成的OpenSSL二进制文件软链接到系统二进制文件目录下
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl && ln -s&/usr/local/ssl/include/openssl /usr/include/openssl
//移走原先系统自带的openssl,将自己编译产生的新文件进行链接。
9、配置库文件搜索路径并加载库配置
echo “/usr/local/sslb” && /etc/ld.so.conf && ldconfig -v
10、查看openssl版本信息
openssl version
11、到/home/zxin10/openssh-7.5p1目录下
/home/zxin10/openssh-7.5p1
12、配置安装路径
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-ssl-&dir=/usr/local/ssl
13、编译并安装
make && make install
14、启动服务(看具体的版本信息:查看contrib对应目录和readme)给使用者添加执行的权限
cp contrib/suse/rc.sshd /etc/init.d/sshd && chmod u+x /etc/init.d/sshd
15、将sshd添加到服务列表里边:生成ssh服务管理脚本并重启sshd服务
chkconfig --add sshd && service sshd restart
16、查看ssh的版本信息
测试的时候可以ssh zxin10@192.168.100.14测试是否能够连接或者打开cmd直接
telnet 192.168.100.7(本机ip)22
查看22端口
版本Linux Suse-template 3.0.76-0.11-default #1 SMP Fri Jun 14 08:21:43
UTC 2013 (ccab990) x86_64 x86_64 x86_64 GNU/Linux
1. 使用 scp 命令传输文件:
使用 scp 命令可以用来通过安全、加密的连接在不同主机之间传输文件。
(1)把本地文件传输到远程主机:
一般语法:scp [本地文件] [用户名@远程主机IP地址:/目标文件夹]
&(2) 把远程文件传输到本地主机:
一般语法:scp [用户名@远程主机IP地址:/源文件] [本地目录]
Note: scp后加 -r 选项可以传输文件夹。
2.使用sftp命令建立FTP会话:
使用sftp命令可以用来打开安全互动的、加密的FTP会话,与FTP相似。一旦通过验证,可以使用一组和使用FTP相似的命令。sftp工具只存在于OpenSSH的2.5.0p1以上的版本中。
使用 sftp 命令的一般语法是:sftp [用户名@远程主机IP地址]
scp是secure copy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。scp在跨机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了,那在使用scp的时候就可以不用输入密码。
命令:scp 【参数】【原路径】【目标路径】 & (复制目录时要加-r)
scp zx@192.168.100.14:/home/zx/soft/openss*.tar.gz&/home/zx
这里zx是用户名,使用时需要输入密码
tar包为源代码包,里面是程序的源代码。./configure的作用是检测系统配置,生成makefile文件,以便你可以用make和make install来编译和安装程序。执行./configure的话要到你解压好的目录中去(cd 程序文件夹名称)。
&ln -s 源文件 目标文件:它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln -s /bin/less /usr/local/bin/less&
源码的安装一般由有这三个步骤:配置(configure)、编译(make)、安装(make install)。
Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。
其中–prefix选项就是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较分散。
为了便于集中管理某个软件的各种文件,可以配置–prefix,如:./configure –prefix=/usr/local可以把所有资源文件放在/usr/local的路径中,就不会分散了。用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单地删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。
当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。
摘录许多不会的知识点,首次写学习记录,烦请大神们多多指导。
阅读(...) 评论()相关软件:
1、ActivePerl 5.22.1 :&
2、Microsoft visual_studio_2010_professional:
3、OpenSSL(openssl-1.0.2g):
安装过程:
1、安装ActivePerl软件
安装ActivePerl软件只需要一步一步进行安装即可。安装完成后用cmd命令行的形式进入到安装目录,比如我把它安装在C:\Perl64\下,进入到C:\Perl64\eg
目录,输入&perl example.pl&,如果现实:"Hello from ActivePerl!",则表示软件安装成功。&
2、设置环境变量
安装成功后,在Path系统变量中加入&C:\Perl64\&,确认即可。
3、安装Microsoft visual_studio_2010_professional软件
这个软件比较大,安装所需的时间也比较长,耐心点,一步一步安装即可。
4、初始化编译环境
注意:这里使用的是在vs tools文件夹下的visual studio x64 Win64命令提示(2010)工具!!!
首先进入到 visual studio指定目录中,
执行命令:cd C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
执行命令:vcvars32.bat
后来我发现自己好像找错地方了,因为我用的是64位系统,我应该生成64位的库,但是我跑到32位下编译了。
如果你想编译64位的库,请参考:
5、执行configure
首先把openssl-1.0.2g解压放到C盘中,openssl所在目录为:C:\openssl-1.0.2g。
然后用命令进入到openssl的目录中:cd C:\openssl-1.0.2g
接着实现命令:perl Configure VC-WIN32 no-asm&--prefix=C:\openssl-1.0.2g
注意:当你下载的openssl是高版本的话,如openssl-1.0.2g,需要在这里加上no-asm,表示不使用汇编,如果你不加上的话,
在执行nmake命令时会出错。但是如果下载是openssl-1.0.1c,貌似不用加no-asm也可以成功。
这里是编译32位的库,所示参数为VC-WIN32,如果你想编译64位的库,请参考:
参考方法:,
6、执行命令:&ms\do_ms.bat&
注意:在OpenSSL根目录下执行,不要进入到ms目录中执行,否则有的文件或目录找不到
7、执行命令:&nmake -f ms\ntdll.mak&
执行make进行编译,执行完后会在openssl-1.0.1g目录下生成一个out32dll文件夹,里面包含了一些静态库、动态库和.exe文件。需要花点时间 ^@^
8、测试,执行命令:nmake -f ms\ntdll.mak test
检查上一步编译是否成功,如果成功则最后显示&passed all tests&字样。
9、执行命令:nmake -f ms\ntdll.mak install
成功则会在C:\openssl-1.0.2g目录下生成bin、include、lib、ssl四个文件夹。
到此安装OpenSSL成功啦。下面介绍一下如何生成一个根证书。
====================================================================
1、首先新建几个文件夹,比如我在C盘下新建demos文件夹:C:\demos
在demos文件夹里面再新建两个文件夹:C:\demos\certs,和C:\demos\private,certs文件夹主要存放生成的证书,private主要存放密钥。
打开OpenSSL命令行工具:C:\openssl-1.0.2g\bin\openssl.exe
openssl的命令有很多,在生成证书之前可以先了解openssl的命令。
2、生成名为yang的密钥,生成过程中需要输入你的密码。
命令:genrsa -aes256 -out C:\demos\private\yang.key.pem
生成的密钥文件:
3、生成根证书签发申请。
在创建的过程中会输入刚创建密钥用的密码,还需要一些信息,比如国家、省份、城市、组织、部门、姓名、邮件等等。
命令:req&-new&-key C:\demos\private\yang.key.pem&-out C:\demos\private\yang_ca.csr
生成的文件:
4、签发根证书。
这一步的工作本来应该由第三方权威机构签发的,但是我们这里只是生成一个自签名的证书,用来玩的,不需要别人的认可,需要自己给自己签发啦。
命令:x509&-req&-days&10000&-sha1&-signkey C:\demos\private\yang.key.pem&-in C:\demos\private\yang_ca.csr&-out&certs/yang_ca.cer
生成的文件:
这时根证书已经生成完毕,直接打开就行啦~~
5、如果想将证书信息改为可信任的,那点击&安装证书&按钮,选择&存储本地计算机& -& 选择证书存储为&受信任的根证书颁发机构& ,后面的步骤确定即可。&
6、关闭证书,再重新打开,即可看到变成可信任的证书了。
所有步骤到此结束了~~~~
阅读(...) 评论()

我要回帖

更多关于 nginx openssl 配置 的文章

 

随机推荐