IPsec certificate身份验证-openssl生成证书

本文介绍如何在Windows XP系统中利用OpenSSL生成CA及客户端证书,并完成IPSec配置实现安全通信的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处: http://blog.youkuaiyun.com/zhangyang0402/archive/2010/05/27/5626953.aspx

 

操作系统:Windows XP professional SP3

Openssl: 1.0.0 29

 

一、        生成CA证书

 

1. 生成CA私钥

C:/demoCA>openssl genrsa -out ca.key 1024

Loading 'screen' into random state - done

Generating RSA private key, 1024 bit long modulus

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

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

e is 65537 (0x10001)

 

2. 生成CA证书请求

C:/demoCA>openssl req -new -key ca.key -out ca.csr

Loading 'screen' into random state - done

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]:Beijing

Locality Name (eg, city) []:Beijing

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

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

Common Name (eg, YOUR name) []:Yang Zhang

Email Address []:yang.zhang@intel.com

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:123456

An optional company name []:

 

3. 自签名CA证书

C:/demoCA>openssl x509 -req -in ca.csr -out ca.cert -signkey ca.key -days 3650

Loading 'screen' into random state - done

Signature ok

subject=/C=CN/ST=Beijing/L=Beijing/O=Intel/OU=IT/CN=Yang Zhang/emailAddress=yang

.zhang@intel.com

Getting Private key

 

二、生成客户端证书

 

1. 生成私钥

C:/demoCA>openssl genrsa -out client.key 1024

Loading 'screen' into random state - done

Generating RSA private key, 1024 bit long modulus

.++++++

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

e is 65537 (0x10001)

 

2. 生成证书请求

C:/demoCA>openssl req -new -key client.key -out client.csr

Loading 'screen' into random state - done

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]:BJ

Locality Name (eg, city) []:BJ

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

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

Common Name (eg, YOUR name) []:client

Email Address []:client@intel.com

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:654321

An optional company name []:

 

3.CA签名

C:/demoCA>openssl x509 -req -in client.csr -out client.cert -CA ca.cert -CAkey c

a.key -CAcreateserial -days 3650

Loading 'screen' into random state - done

Signature ok

subject=/C=CN/ST=BJ/L=BJ/O=Intel/OU=IT/CN=client/emailAddress=client@intel.com

Getting CA Private Key

 

4. 转换成pfx格式

C:/demoCA>openssl pkcs12 -export -clcerts -in client.cert -inkey client.key -out

 client.pfx

Loading 'screen' into random state - done

Enter Export Password:

Verifying - Enter Export Password:123456

 

三、        配置Ipsec

 

通过上面的方法,生成CA证书ca.cert,两个客户端证书client.pfx, server.pfx

1.       导入证书

在两台测试机中,通过MMC分别导入CA证书和自己的证书,CA证书导入到本地计算机的“受信任的根证书颁发机构”证书下,个人证书导入到本地计算机的“个人”证书下(个人证书导入时要输入先前的export password)

 

注:导入个人证书后,在MMC证书中双击个人证书,在“常规”选项卡时,可看到一个钥匙标记“您有一个与该证书对应的私钥”, 若无此标记,则Ipsec Main Mode协商中将会失败。这也是制作客户端证书时转换成pfx格式证书的原因。

 

2.       设置身份验证方法

在两台测试机中,设置身份验证方法为“使用由此证书颁发机构(CA)颁发的证书”,单击“浏览”按钮,选择CA证书即可(注:不是选择个人证书)

 

四、测试

C:/demoCA>ping 192.168.0.201

 

Pinging 192.168.0.201 with 32 bytes of data:

 

Negotiating IP Security.

Reply from 192.168.0.201: bytes=32 time<1ms TTL=128

Reply from 192.168.0.201: bytes=32 time<1ms TTL=128

Reply from 192.168.0.201: bytes=32 time<1ms TTL=128

 

Ping statistics for 192.168.0.201:

    Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

 

测试成功

 

<think>好的,我现在需要帮助用户了解如何使用OpenSSL生成证书并验证其有效性。用户提供了几个引用资料,我需要仔细阅读这些资料并提取关键步骤。 首先,用户提到的引用[1]、[2]、[3]、[4]都涉及生成证书的不同方法。例如,引用[1]和[3]提到了生成服务器证书的基本步骤:生成私钥、创建CSR、用CA签名。引用[2]和[4]则讨论了自签名证书生成,以及如何添加主题备用名称(SAN)等扩展。 接下来,我需要将这些步骤整理成一个清晰的流程。生成证书通常包括几个主要步骤:生成私钥、创建证书签名请求(CSR)、用CA签名生成证书,以及自签名的情况。验证证书有效性可能需要检查证书内容、验证签名链、检查有效期和扩展信息。 用户可能对CA签名和自签名证书都感兴趣,所以应该分别说明这两种情况。例如,使用CA签名需要先有一个CA的根证书和私钥,而自签名则直接用自己的私钥签名CSR。 然后,验证证书的有效性。根据引用[4],可以使用openssl verify命令来验证证书链,同时检查证书的详细信息,如主题、颁发者、有效期和SAN扩展。此外,可能还需要检查证书是否被吊销,但引用中没有提到CRL或OCSP,所以可能暂时不涉及这部分。 需要注意用户可能遇到的常见问题,比如私钥的密码保护、SAN的添加方法,以及如何确保证书链完整。例如,引用[4]中提到了使用-extfile来添加SAN扩展,这在生成服务器证书时很重要,因为现代浏览器需要SAN信息。 还需要确保命令的正确性,比如在生成自签名证书时,使用x509命令的-signkey参数,而在CA签名时使用ca命令或x509的-CA参数。同时,注意不同步骤中是否需要输入密码,比如引用[1]中使用ca命令时可能需要CA私钥的密码。 最后,用户可能需要验证证书是否被正确签名,所以需要说明如何使用openssl verify命令,并确保CA证书链正确。如果有中间证书,也需要包含在验证过程中。 总结步骤: 1. 生成私钥 2. 创建CSR 3. 签名生成证书(CA或自签名) 4. 验证证书内容 5. 验证签名链 6. 检查扩展信息 确保每个步骤都有对应的命令示例,并解释参数的作用。同时,提醒用户注意路径和文件名的正确性,避免常见错误。</think>### 分步说明:使用OpenSSL生成证书并验证有效性 #### 一、生成证书的两种主要方式 1. **自签名证书**(适合测试环境) 2. **CA签名证书**(需CA根证书,适合生产环境) --- ### 方法1:生成自签名证书(三步完成) 1. **生成私钥** ```bash openssl genrsa -out my.key 2048 ``` - `-out`:输出文件名 - `2048`:RSA密钥长度[^2] 2. **创建证书签名请求(CSR)** ```bash openssl req -new -key my.key -out my.csr -subj "/C=CN/ST=Beijing/O=Test/CN=example.com" ``` - `-subj`:直接指定证书主题,避免交互输入[^2] - 若要添加**多域名/IP支持**,需通过扩展文件实现: ```bash openssl req -new -key my.key -out my.csr -config <(cat <<EOF [req] distinguished_name = req_distinguished_name req_extensions = SAN [req_distinguished_name] countryName = CN stateOrProvinceName = Beijing commonName = example.com [SAN] subjectAltName = DNS:blog.example.com,IP:127.0.0.1 EOF ) ``` [^4] 3. **生成自签名证书** ```bash openssl x509 -req -in my.csr -signkey my.key -out my.crt -days 365 -sha256 ``` - `-days`:有效期天数 - `-sha256`:指定哈希算法[^4] --- ### 方法2:通过CA签发证书(四步完成) 1. **生成CA证书**(先创建CA密钥和根证书) ```bash # 生成CA私钥 openssl genrsa -aes256 -out ca.key 4096 # 生成CA根证书 openssl req -x509 -new -key ca.key -out ca.crt -days 3650 -subj "/CN=My Root CA" ``` 2. **生成服务器证书请求** ```bash openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr ``` 3. **使用CA签发证书** ```bash openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -extfile <(echo "subjectAltName=DNS:example.com") ``` - `-CAcreateserial`:自动创建序列号文件[^1] - `-extfile`:声明SubjectAltName扩展[^4] --- ### 证书验证关键操作 1. **验证证书签名链** ```bash openssl verify -CAfile ca.crt server.crt ``` - 若返回`server.crt: OK`表示验证通过[^4] 2. **检查证书详细信息** ```bash openssl x509 -in server.crt -text -noout ``` - 查看颁发者、有效期、扩展字段(如SAN) 3. **验证私钥与证书匹配性** ```bash openssl x509 -noout -modulus -in server.crt | openssl md5 openssl rsa -noout -modulus -in server.key | openssl md5 ``` - 若两个MD5值相同,则密钥匹配[^3] --- ### 常见问题处理 1. **证书链不完整** - 合并中间证书到文件:`cat server.crt intermediate.crt > fullchain.crt` 2. **证书过期检查** ```bash openssl x509 -in server.crt -enddate -noout ``` 3. **OCSP在线验证**(需支持OCSP的CA) ```bash openssl ocsp -issuer ca.crt -cert server.crt -url http://ocsp.example.com ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值