OPENSSL 制作 Ikev2证书

在一个 VPS 上配置 IKEV2 VPN 服务器时,用 OPENSSL 制作了所需的数字证书,奇怪的怎么弄都无法连接服务器,一直提示 “IKE_SA 链接超时” 。最后实在没辙了,怀疑到是不是证书有问题,因为平时都是用 ipsec pki 生成证书的。于是按照网上的教程用 ipsec pki 制作证书,结果很顺利的登入服务器。

一、仔细对比了 ipsec pki 和 OPENSSL 签发的证书,区别还是有的:

1. 在证书的常规项里面,ipsec pki 的证书明确指出 “保证远程计算机的身份” 和 “允许 Internet 上的安全通信”

2. 在证书扩展项里面,ipsec pki 的证书指出用于 “服务器身份验证” 和 “IP 安全 IKE 中级” ,同时使用了 “使用者可选名称”,内容为 DNS Name

     

二、再对比了制作证书的指令:

1. 在建立根证书的时两者基本差别不大,

2. 在签发证书时,ipsec pki 使用了 san 扩展和几个 flag

ipsec pki 签发 server 证书

    ipsec pki --gen --type rsa --size 4096 --outform pem > vpnkey.pem

    ipsec pki --pub --in vpnkey.pem --type rsa | ipsec pki --issue --lifetime 1825 --cacert ca.pem --cakey cakey.pem \
    --dn "C=US, O=VPN Server, CN=vpn-do.yourshell.info" \
    --san vpn-do.yourshell.info --flag serverAuth --flag ikeIntermediate \
    --outform pem > vpn.pem

Ikev2证书 需要支持 IKE 协议(因特网密钥交换协议) ,同时支持“使用者可选名称“(SAN 扩展,多域名证书)以提高设备的兼容性

三、在谷歌上搜索一番,修改 openssl.cnf 如下

在 [ new_oids ] 配置段中加入

ikeIntermediate = 1.3.6.1.5.5.8.2.2

在 [ req ] 配置段中加入

utf8 = yes

修改 [ usr_cert ] 配置段

basicConstraints=CA:true

nsCertType = server, client, email, objsign

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

extendedKeyUsage = serverAuth,clientAuth,codeSigning,emailProtection, ikeIntermediate

修改 [ v3_req ] 配置段

# Extensions to add to a certificate request

extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection, ikeIntermediate

basicConstraints = CA:true

keyUsage = nonRepudiation, digitalSignature, keyEncipherment

subjectAltName = @alt_names

[ alt_names ]

DNS.1 = 域名1

DNS.2 = 域名2

四、最后在 签发证书的时,使用 -extensions v3_req  参数

openssl ca -extensions v3_req -in user_csr.pem -out user_cert.crt -days 3650

参考地址

OpenSSL SAN 证书 http://liaoph.com/openssl-san/

SSLConfig        http://wiki.cacert.org/Roots/OpenSSLConfig

最新文章

  1. JQuery可见性过滤选择器:hidden无法获取通过visibility:hidden样式隐藏的元素-遁地龙卷风
  2. FK JavaScript:ArcGIS JavaScript类库加载不成功而导致的程序异常
  3. c++的用处
  4. 一直纠结中的"底层模板"含义(借鉴)
  5. SQLlite(WebSQL)如何排序并分页查询(SQLlite语法)
  6. linux中vi编辑器
  7. 在iOS上present一个半透明的viewController
  8. POJ 3286 How many 0's?
  9. C#字符串常见操作总结
  10. JMockit使用总结
  11. JAVA 局部变量表
  12. Jquery跨域读取城市天气预报信息
  13. hdu 5430(几何)
  14. ios7内购、Game Center 实现 in-App Purchases & Game Center
  15. asp.net core 系列之并发冲突
  16. MassTransit&Sagas分布式服务开发ppt分享
  17. PHP中的DateTime类
  18. curl安装和使用
  19. WordPress版微信小程序2.2.0版发布
  20. Linux mmc framework2:基本组件之mmc

热门文章

  1. 第四讲 Yang-Mills方程与Maxwell方程
  2. 【BZOJ 1047】[HAOI2007]理想的正方形
  3. 洛谷—— P2934 [USACO09JAN]安全出行Safe Travel || COGS ——279|| BZOJ——1576
  4. 国庆 day 6 下午
  5. 八 rowkey设计 几种方法
  6. [Recompose] Make Reusable React Props Streams with Lenses
  7. HDU 5303 Delicious Apples(贪心 + 背包 2015多校啊)
  8. Cocos2d-x第三方类库不支持arm64的问题解决(64位架构)
  9. php 读取windows 的系统版本,硬盘,内存,网卡,数据流量等
  10. Android GridView LruCache