一、系统环境说明

  • 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. AsyncTask异步加载和HttpURLConnection网络请求数据

    //获得网络数据    private void huodeshuju() { //这里是使用线程,已注释掉        /*new Thread(){            public void ...

  2. monkeyrunner对比屏幕局部图像.getSubImage()

    monkeyrunner对比屏幕局部图像.getSubImage() monkeyrunner执行测试时使用.takeSnapshot()截图,默认截取整个屏幕,包含了系统的状态栏.真实手机状态栏中包 ...

  3. debug运行可以,release运行报错的原因及修改方法

    通常我们开发的程序有2种模式:Debug模式和Release模式在Debug模式下,编译器会记录很多调试信息,也可以加入很多测试代码,方便我们程序员测试,以及出现bug时的分析解决Release模式下 ...

  4. android sql Cursor

    Cursor 是每行的集合. 使用 moveToFirst() 定位第一行. 你必须知道每一列的名称.你必须知道每一列的数据类型.Cursor 是一个随机的数据源. 所有的数据都是通过下标取得. Cu ...

  5. Android蓝牙传感应用(转)

    源:http://www.cnblogs.com/xiaochao1234/p/3753538.html Android手机一般以客户端的角色主动连接SPP协议设备(接上蓝牙模块的数字传感器),连接流 ...

  6. Android -----ArrayAdapter的重写 .

    引自:http://blog.csdn.net/jason0539/article/details/9918465 最近需要用ArrayAdapter,保存一下,以后方便查找 ArrayAdapter ...

  7. HDU 2846 Repository(字典树)

    字典树较为复杂的应用,我们在建立字典树的过程中需要把所有的前缀都加进去,还需要加一个id,判断它原先是属于哪个串的.有人说是AC自动机的简化,但是AC自动机我还没有做过. #include<io ...

  8. .htaccess 保护文件夹

    想要保护admin文件夹,经过以下两个步骤: 步骤一.可以用记事本新建文件.htaccess,输入以下内容: AuthType BasicAuth UserFile D:/AppServ/www/Hi ...

  9. CSS中绝对定位依据谁进行定位?

    结论 绝对定位的top等的依据元素需满足3个条件: 已定位(position:relative/fixed/absolute) 最近的 祖辈元素(一定是祖辈元素不是同辈元素) 说明 一般会为body设 ...

  10. 再探CRC(转)

    源:http://hi.baidu.com/skystalker/item/228a263147f74e87f5e4ad8d 之前写了CRC16的程序,虽说能用,却不知其所心然,现在要用CRC32,重 ...