一、系统环境说明

  • 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. java 内存分配全面解析

    JVM是什么? 首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上;可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了 Java的平台无 ...

  2. mysql笔记6之数据类型

    1 区别一: varchar:可变长度的字符串.根据添加的数据长度决定占用的字符数 char:固定长度的字符串 2区别二 int:没有限制 int(4):限制为4 3 区别三: 日期: date    ...

  3. ping命令使用技巧(一次Ping多个地址)

    打开windows 命令行 窗口, 在命令行输入以下命令: for /l %i in (1,1,255) do ping -n 1  -w 60 192.168.0.%i  | find " ...

  4. aspx基础开始

    <%@ Page Language="C#" Debug="true" trace="false" validateRequest=& ...

  5. .bat批处理命令的介绍

    HUC = = D组 http://www.cnhonkerarmy.com/ 63707869 =====================================开始============ ...

  6. oracle有三个默认的用户名和密码,但是都无法登录的解决方法

    system/change_on_install, system/manager是较旧版的预设密码, 在安装较新版时会提示你设定密码, 若没有或忘了设定, 请参考以下重设: sqlplus / as ...

  7. Linux字符编码转换 UTF8转GB3212

    在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码.    一.利用iconv函数族进行编 ...

  8. 半透命opacity:(0-1),对于IE6版本不支持需要用filter:alpha(opacity=0-100)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. java source map

    Chrome 更新后出现了 jquery.min.map 404  (Not Found) 的信息 这个到底是什么东西?查询了一下,得到了以下资料 JQuery 官方解释 摘录一下內容 从 jQuer ...

  10. 设置自己Eclipse代码风格(内部)

    经过这几次的代码提交,发现很多人的代码风格不够规范.个人认为很有必要强制性规定一下代码的规范. 整体来说,有三种代码风格,其中两种类似于这样的: public void function(){ //f ...