一、系统环境说明

  • Linux & OpenSSL
 Linux localhost 2.6.-.el5 # SMP Tue Mar  :: EDT  x86_64 x86_64 x86_64 GNU/Linux
[root@localhost /home/study]#openssl version
OpenSSL 0.9.8e-fips-rhel5 Jul
  • Windows & IIS

  Windows 7 X64 , IIS 7, 默认网站

二、创建密钥链

  注意:请先看一下最后的注意事项,避免走弯路。

  1. 创建根证书(自签名证书)

 echo "create root ca key"
openssl genrsa -out root-key.key
echo ----------------------
echo "create root cert request"
openssl req -new -key root-key.key -out root-req.csr -text -subj "/CN=MRootCA"
echo ----------------------
echo "create root self sign cert"
openssl x509 -req -in root-req.csr -out RootCA.crt -sha1 -signkey root-key.key -days -text -extfile openssl.cnf -extensions v3_ca

  2. 创建中级证书(利用RootCA私钥签名)

 echo "create 2 level cert key"
openssl genrsa -des3 -out root-mid.key
echo ----------------------
echo "create 2 level cert csr"
openssl req -new -key root-mid.key -out root-mid.csr -text -subj "/CN=MidCA"
echo ----------------------
echo "sign with root-crt"
openssl x509 -req -in root-mid.csr -CA RootCA.crt -CAkey root-key.key -CAcreateserial -days -out RootMid.crt -text -extfile openssl.cnf -extensions v3_ca

  3. 创建服务器证书(利用中级证书私钥签名)

  (使用openssl创建申请:openssl req -out server.csr -new -sha256 -newkey rsa:2048 -nodes -keyout server.key)

  证书申请创建:

 #在IIS中“创建证书申请”文件,拷贝到Linux系统中(假设名称为Server.csr)
openssl x509 -req -in Server.csr -CA RootMid.crt -CAkey root-mid.key -CAcreateserial -days -out Server.crt -text -extfile openssl.cnf -extensions v3_ca

  4. 将根证书(RootCA.crt)、中级证书(MidCA.crt)、服务器证书(Server.crt)拷贝到Win7中

  5. 导入RootCA.crt导入到“受信任的根证书颁发机构”,MidCA.crt导入到“中级证书颁发机构” --- 都是本地计算机

  6. 执行“完成证书申请步骤”,绑定网站到SSL,并指定证书为Server.crt的友好名称

  7. 访问https://ip即可进行验证。

三、注意事项

  1. 当证书签发超过两级时,在IE中查看证书是会出现如下“因为证书路径中的证书颁发机构似乎没有颁发证书的权限或不能被用作终端实体证书,证书无效”错误,修改openssl默认配置即可(默认配置在v3_ca配置节,路径/etc/pki/tls/openssl.cnf)。

 # This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
#basicConstraints = CA:true
# xwliu
basicConstraints = CA:true,pathlen:

四、参考资料

关于数字证书的概念请参考以下链接:

<http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html>

关于证书与证书链的高层次理解请参考如下链接:

<http://lukejin.iteye.com/blog/587200>

其他参考资料:

<http://firefly.iteye.com/blog/674208>

<http://wenku.baidu.com/view/32409a4058fb770bf78a5577.html>

CRT转PEM:openssl x509 -in server.crt -out server.pem

PFX转PEM:openssl pkcs12 -in server.pfx -out server.pem -nodes

****************转载请注明出处******************

利用OpenSSL创建证书链并应用于IIS7的更多相关文章

  1. 利用openssl管理证书及SSL编程第1部分: openssl证书管理

    利用openssl管理证书及SSL编程第1部分 参考:1) 利用openssl创建一个简单的CAhttp://www.cppblog.com/flyonok/archive/2010/10/30/13 ...

  2. [转帖]用 OpenSSL 创建可以用于 https 的证书

    用 OpenSSL 创建可以用于 https 的证书 开会时 说到了安全问题 就简单鼓捣了一下 以后还是用nginx 转发比较好一些. https://blog.csdn.net/joyous/art ...

  3. 使用OpenSSL创建自己的CA root certificate

    在密码学中,CA(Certificate Authority,认证机构)是指一个被多个用户信任的机构,该机构能够创建和指派公钥证书. 为规范起见,我们先介绍本文可能涉及的术语, asymmetric ...

  4. OpenSSL - 利用OpenSSL自签证书和CA颁发证书

    秘钥操作 这个命令会生成一个1024/2048位的密钥,包含私钥和公钥. openssl genrsa -out private.key 1024/2038                     ( ...

  5. 利用openssl构建根证书-服务器证书-客户证书

    利用openssl构建根证书-服务器证书-客户证书 OpenSSL功能远胜于KeyTool,可用于根证书,服务器证书和客户证书的管理 一.构建根证书 1.构建根证书前,需要构建随机数文件(.rand) ...

  6. SSD固态盘应用于Ceph集群的四种典型使用场景

    在虚拟化及云计算技术大规模应用于企业数据中心的科技潮流中,存储性能无疑是企业核心应用是否虚拟化.云化的关键指标之一.传统的做法是升级存储设备,但这没解决根本问题,性能和容量不能兼顾,并且解决不好设备利 ...

  7. linux以下C 利用openssl的AES库加密,解密

    OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是所有支持或者是部分支持. 返回值:"aes(full)" ...

  8. 利用openssl自建CA体系

    使用 OpenSSL 创建私有 CA:1 根证书 使用 OpenSSL 创建私有 CA:2 中间证书 使用 OpenSSL 创建私有 CA:3 用户证书 今天跟着上面的三部曲,做了一下openssl的 ...

  9. 利用Oracle创建表空间和用户

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217152.html 第一步,创建表空间 以SYS/sys账户和SYSDBA身份登录 ...

随机推荐

  1. 用for、while、do-while循环输出10句“好好学习,天天向上!”

    #include "stdio.h" void main() { int time; ;time<=;time++) printf("%d.好好学习,天天向上!\n ...

  2. ViewHolder最简洁的写法

    通用viewHolder工具类: public class ViewHolder { // I added a generic return type to reduce the casting no ...

  3. 微信小程序页面-页面跳转失败WAService.js:3 navigateTo:fail url not in app.json

    微信小程序新建页面的要素一是新建的文件名称和其子文件的名称最好一致,不然容易出问题,在小程序页面跳转中如果出现WAService.js:3 navigateTo:fail url not in app ...

  4. AngularJS数据建模(转载)

    出处不明 我们知道,AngularJS并没有自带立等可用的数据建模方案.而是以相当抽象的方式,让我们在controller中使用JSON数据作为模 型.但是随着时间的推移和项目的成长,我意识到这种建模 ...

  5. Android内存性能优化(内部资料总结) 转

    刚入门的童鞋肯能都会有一个疑问,Java不是有虚拟机了么,内存会自动化管理,我们就不必要手动的释放资源了,反正系统会给我们完成.其实Java中没有指针的概念,但是指针的使用方式依然存在,一味的依赖系统 ...

  6. i2c的时钟延展问题(转)

    源:http://blog.csdn.net/zyboy2000/article/details/7636769 结论: (即在模拟i2c主:在主设置SCL为高后,要超时判断SCL是否为高,再发后面的 ...

  7. Oracle如何还原数据库

    http://blog.sina.com.cn/s/blog_6c25b1e50101ga0b.html

  8. 怎样让外界无法改变自定义view的尺寸大小

    重写setFrame和setBounds方法即可. + (instancetype)testView { return [[self alloc] init]; } - (void)setFrame: ...

  9. Zigbee协议栈OSAL层API函数【转载】

              OSAL层提供了很多的API来对整个的协议栈进行管理.主要有下面的几类:信息管理.任务同步.时间管理.中断管理.任务管理.内存管理.电源管理以及非易失存储管理.看到这些管理是不是感 ...

  10. dwr.xml 配置

    dwr.xml 是你用来配置 DWR 的文件,默认是将其放入 WEB-INF 文件夹. 创建一个 dwr.xml 文件dwr.xml 有如下的结构: <?xml version="1. ...