`
gelongmei
  • 浏览: 211295 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

利用OpenSSL生成库和命令程序

 
阅读更多
在生成的命令程序中包括对加/解密算法的测试,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的证书文件以及CA文件.下面以C/S模式说明证书文件的生成步骤:

证书文件生成:
一.服务器端
1.生成服务器端的私钥(key文件);
openssl genrsa -des3 -out server.key 1024
运行时会提示输入密码,此密码用于加密key文件(参数des3是加密算法,也可以选用其他安全的算法),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果不要口令,则可用以下命令去除口令:
openssl rsa -in server.key -out server.key

2.生成服务器端证书签名请求文件(csr文件);
openssl req -new -key server.key -out server.csr
生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其 提示一步一步输入要求的个人信息即可(如:Country,province,city,company等).

二.客户端
1.对客户端也作同样的命令生成key及csr文件;
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr

三.生成CA证书文件
server.csr与client.csr文件必须有CA的签名才可形成证书.
1.首先生成CA的key文件:
openssl genrsa -des3 -out ca.key 1024
2.生成CA自签名证书:
openssl req -new -x509 -key ca.key -out ca.crt
可以加证书过期时间选项 "-days 365".

四.利用CA证书进行签名
用生成的CA证书为server.csr,client.csr文件签名,利用openssl中附带的CA.pl文件(在安装目录中openssl/apps目录下),
1.ca.pl -newca, 在提示输入已有的证书文件时,输入上面已生成的ca.crt证书文件;
2.生成服务端证书文件
Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
3.生成客户端证书文件
Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
必须保证openssl.cnf在当前目录下,这个文件可以在apps目录中找到.

1.首先要生成服务器端的私钥(key文件):

[root@qiujicai.com~/ssl]#openssl genrsa -des3 -out server.key 1024

运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!

去除key文件口令的命令:

[root@qiujicai.com~/ssl]#openssl rsa -in server.key -out server.key



2.用server.key生成一个证书:

[root@qiujicai.com~/ssl]#openssl req -new -key server.key -out server.csr

Enter pass phrase for server.key:12345

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) [AU]:CN

State or Province Name (full name) [Some-State]:china

Locality Name (eg, city) []:Zhuhai

Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxxx Ltd....

Organizational Unit Name (eg, section) []:jecks

Common Name (eg, YOUR name) []:www.qiuicai.com

Email Address []:xxx@qiujicai.com



Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:12345

An optional company name []:xxx@qiujicai.com

生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可.



3.对客户端也作同样的命令生成key及csr文件(在这两步写在一起):

A: [root@qiujicai.com~/ssl]#openssl genrsa -des3 -out client.key 1024


Generating RSA private key, 1024 bit long modulus

...........++++++

..++++++

e is 65537 (0x10001)

Enter pass phrase for client.key:12345

Verifying - Enter pass phrase for client.key:12345



B: [root@qiujicai.com~/ssl]# openssl req -new -key client.key -out client.csr

Enter pass phrase for client.key:12345

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) [AU]:CN

State or Province Name (full name) [Some-State]:china

Locality Name (eg, city) []:Zhuhai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxxx Ltd....

Organizational Unit Name (eg, section) []:jecks

Common Name (eg, YOUR name) []:www.qiuicai.com

Email Address []:xxx@qiujicai.com



Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:12345

An optional company name []:xxx@qiujicai.com



4.生成的CSR证书文件必须有CA的签名才可形成证书.这时生成一个KEY文件ca.key 和根证书ca.crt

[root@qiujicai.com~/ssl]# openssl req -new -x509 -keyout ca.key -out ca.crt

Generating a 1024 bit RSA private key

...++++++

...................++++++

writing new private key to 'ca.key'

Enter PEM pass phrase:12345

Verifying - Enter PEM pass phrase:

-----

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:china

Locality Name (eg, city) []:Zhuhai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:xxxx Ltd....

Organizational Unit Name (eg, section) []:jecks

Common Name (eg, YOUR name) []:www.qiuicai.com

Email Address []:xxx@qiujicai.com



Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:12345

An optional company name []:xxx@qiujicai.com


5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名(这也是两写在一起):

A: [root@qiujicai.com~/ssl]# openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key


Using configuration from openssl.cnf

Enter pass phrase for ca.key:

Check that the request matches the signature

Signature ok

Certificate Details:

Serial Number: 1 (0x1)

Validity

Not Before: Feb 26 04:15:02 2010 GMT

Not After : Feb 26 04:15:02 2011 GMT

Subject:

countryName = CN

stateOrProvinceName = china

organizationName = xxx.Ltd.C

organizationalUnitName = jecks

commonName = www.qiujicai.com

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier:

30:70:D2:EB:9B:73:AE:7B:0E:8E:F6:94:33:7C:53:5B:EF:93:FC:38

X509v3 Authority Key Identifier:

keyid:DB:D6:83:BB:7F:28:C2:A9:40:6A:D8:32:FC:01:E0:5C:48:27:51:19



Certificate is to be certified until Feb 26 04:15:02 2010 GMT (365 days)

Sign the certificate? [y/n]:y





1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated



B: [root@qiujicai.com~/ssl]#openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key



[root@airwaySSL bin]# openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

Using configuration from openssl.cnf

Enter pass phrase for ca.key:

Check that the request matches the signature

Signature ok

The countryName field needed to be the same in the

CA certificate (CN) and the request (cn)

..................

另外,这个certificate是BASE64形式的,要转成PKCS12才能装到IE,/NETSCAPE上.所以还要:

[root@qiujicai.com~/ssl]# openssl pkcs12 -export -in client.pem -inkey client.key -out client.pfx

Enter pass phrase for client.key:

Enter Export Password: # 设置client.pfx密码

Verifying - Enter Export Password:


现在我们所需的全部文件便生成了.

另:

client使用的文件有:ca.crt,client.crt,client.key,client.pfx

server使用的文件有:ca.crt,server.crt,server.key

6.最后

编辑/etc/apache2/sites-enabled/000-default

NameVirtualHost *:443


<VirtualHost *:443>


ServerSignature


OnSSLEngine On


SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt #指定服务器证书位置


SSLCertificateKeyFile /usr/local/apache/conf/ssl.crt/server.key #指定服务器证书key位置


SSLCACertificatePath /usr/local/apache/conf/ssl.crt #证书目录


SSLCACertificateFile /usr/local/apache/conf/ssl.crt/ca.csr #根证书位置


#开启客户端SSL请求


SSLVerifyClient require


SSLVerifyDepth 1


ServerAdmin webmaster@localhost

ServerName www.qiujicai.com

DocumentRoot /var/www/test

ErrorDocument 404 http://www.qiujicai.com/err.php

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/test/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>


</VirtualHOst>

证书安装及使用
把刚才生成的证书:根证书ca.crt和客户证书client.crt(client.pfx)安装到客户端, ca.crt安装到信任的机构,client.crt直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器。在IE中我们一般导入client.pfx证书,导入时会提示上面设置的密码。
分享到:
评论

相关推荐

    利用OpenSSL生成证书详解

    OpenSSL 提供了丰富的工具和命令来生成证书,包括生成私钥、生成证书请求、生成证书和证书管理等。 OpenSSL 是一个功能强大和全面的安全开发包,提供了主要的密码算法、常用的密钥和证书封装管理功能以及 SSL 协议...

    OpenSSL静态库.zip

    OpenSSL是一个开源项目,提供了一套强大的安全套接字层(SSL)和传输层安全(TLS)协议实现,以及各种密码学算法、公用...开发者只需要将库文件导入项目,并遵循OpenSSL的API规范,即可轻松利用其强大的加密和安全功能。

    window下openssl依赖库

    4. 执行Makefile:运行`make`命令来编译源代码,生成所需的库文件和动态链接库。 5. 安装OpenSSL:将编译生成的库文件(如libeay32.lib、ssleay32.lib)复制到Qt的lib目录,将动态链接库文件(libeay32.dll、ssleay...

    编译好的OpenSSL库

    OpenSSL库是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,它包含了一组...通过理解这些知识点,开发者可以在Windows平台上利用提供的OpenSSL库进行安全相关的开发工作,实现安全的数据传输和加密功能。

    openssl和libcurl的静态库(VS2008和VS2010编译)

    - 在项目中,添加openssl、zlib和libcurl的头文件和库文件路径。 - 链接静态库,例如`#pragma comment(lib, "libeay32.lib")`,`#pragma comment(lib, "ssleay32.lib")`和`#pragma comment(lib, "libcurl.lib")`。...

    利用openssl自制CA证书

    OpenSSL是一个强大的安全套接层(SSL)密码库,包含了各种主要的密码算法、常用的密钥和证书封装管理功能,以及SSL协议,并提供丰富的应用程序供测试或其他目的使用。在我们的场景中,我们将使用openssl来生成和管理...

    支付宝OPENSSL生成工具-windows

    1. 公钥和私钥:使用 `openssl genpkey` 命令生成 RSA 私钥,然后使用 `openssl rsa -pubout` 生成对应的公钥。例如: ``` openssl genpkey -algorithm RSA -out private_key.pem openssl rsa -pubout -in ...

    openssl rsa 密钥生成工具

    OpenSSL 是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序供测试或其他目的使用。本文将详细讲解如何使用OpenSSL工具生成RSA密钥对,并...

    openssl 1.1.0库及使用方法介绍

    OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现库,同时也包含了众多的加密算法、证书操作和其他安全功能。OpenSSL 1.1.0是该库的一个重要版本,它引入了许多新特性、性能优化以及对现有功能的改进。...

    openssl-1.0.1e 静态库

    1. **配置环境**:确保安装了VC++编译器,并设置好环境变量,包括`INCLUDE`和`LIB`路径,使其指向VS2008的头文件和库文件目录。 2. **运行Configure脚本**:进入OpenSSL源代码目录,执行`Configure`脚本来配置编译...

    OpenSSL1.1.1g安装包及生成证书批处理

    总结起来,这个压缩包提供了在Windows环境下安装OpenSSL和Perl的步骤,以及利用批处理脚本自动化生成各种证书文件的方法。对于服务器管理员或者开发者来说,这能大大提升证书管理的效率和便利性。

    openssl,ssl工具

    2. **创建 CSR**:使用 `openssl req` 命令生成 CSR,其中需要填写组织信息和域名信息。 3. **自签名证书**:使用 `openssl x509` 命令,将 CSR 和私钥转化为自签名证书。 **三、安装与配置** 在 Windows 系统中,...

    Win32和64OpenSSL

    开发者则利用OpenSSL的API在他们的应用程序中集成加密功能。在Windows环境下,安装OpenSSL后,用户可以在命令行通过`openssl`命令执行各种加密操作,如生成RSA密钥对、进行哈希计算、或者进行SSL/TLS连接测试。 总...

    64位 openssl lib库

    OpenSSL 是一个强大的安全套接层 (SSL) 和传输层安全 (TLS) 库,用于加密通信,确保网络数据传输的安全性。它包含了各种加密算法、常用的密钥和证书操作,以及安全协议实现,广泛应用于Web服务器、应用程序、操作...

    openssl1.1 windows(32位 +64位).zip

    安装程序包含了OpenSSL库的所有必要组件,包括动态链接库(DLLs)、头文件和静态库,使得开发者可以在Windows平台上轻松集成OpenSSL功能。 OpenSSL在Windows上的安装过程通常包括以下几个步骤: 1. **选择正确的...

    openssl文档

    开发者可以利用这些库在应用程序中实现安全通信。 2. **SSL/TLS 协议**: SSL(Secure Sockets Layer)和它的继任者TLS(Transport Layer Security)是用于网络通信的安全协议,它们确保数据在网络间传输时的隐私和...

    curl+openssl开发库(VS2017x64)

    `curl`是一个强大的命令行工具和库,用于传输数据到或从服务器,支持多种协议如HTTP、HTTPS、FTP等。它在各种应用场景中都有所体现,如下载文件、上传数据、执行RESTful API等。`curl`库的使用使得开发者能够轻松地...

    OpenSSL 1.1.1b Windows版 openssl.exe

    OpenSSL 是一个强大的安全套接层 (SSL) 和传输层安全 (TLS) 库,它提供了各种加密算法、常用的密钥和证书封装管理功能以及 SSL 协议,并提供了一个应用程序接口(API),使得开发者能够在自己的应用程序中实现这些...

    openssl-1.0.2o VS下静态库

    在本文中,我们将深入...务必确保遵循正确的步骤,以确保正确地集成和利用OpenSSL的强大功能。在实际应用中,还要关注安全更新,尽管这里我们讨论的是1.0.2o版本,但更现代的版本可能提供更多的安全修复和功能改进。

    Windows下的OpenSSL

    总的来说,Windows下的OpenSSL为用户提供了强大的加密和证书管理功能,尽管其命令行界面可能对初学者有些复杂,但一旦熟悉,就能充分利用它来提升系统的安全性。无论是开发安全的网络应用,还是维护服务器的安全,...

Global site tag (gtag.js) - Google Analytics