第一部分:概述

。。

第二部分:环境准备

1 操作系统

CentOS 6.x

2 安装openssl

  1. yum install -y openssl

3 安装jdk

从官网下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  1. mkdir -p /opt/jtools

此处下载的是  jdk-8u161-linux-x64.tar.gz    上传到CentOS6中,解压到/opt/jtools/java/目录下

  1. [root@iZ2ze2pbmzw561v3fj8o3wZ jdk1.8.0_161]# pwd/opt/jtools/java/jdk1.8.0_161[root@iZ2ze2pbmzw561v3fj8o3wZ jdk1.8.0_161]# lsbin        include         lib      README.html  THIRDPARTYLICENSEREADME-JAVAFX.txtCOPYRIGHT  javafx-src.zip  LICENSE  release      THIRDPARTYLICENSEREADME.txtdb         jre             man      src.zip[root@iZ2ze2pbmzw561v3fj8o3wZ jdk1.8.0_161]#

配置环境变量

  1. vim ~/.bash_profile

在文件中增加如下内容

  1. #JAVA_HOME
  2. export JAVA_HOME=/opt/jtools/java/jdk1.8.0_161export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  3. export PATH=$JAVA_HOME/bin:$PATH

保存后,使环境变量生效

  1. source ~/.bash_profile

查看Java版本

  1. [root@iZ2ze2pbmzw561v3fj8o3wZ jdk1.8.0_161]# java -version
  2. java version "1.8.0_161"
  3. Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
  4. Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
  5. [root@iZ2ze2pbmzw561v3fj8o3wZ jdk1.8.0_161]#

第三部分:证书服务设计与部署

一、证书服务目录结构设计

证书服务部署时,需指定Openssl工作目录,初始脚本会自动创建相关文件夹和文件,并生成根证书。

二、 将相关脚本及配置文件,上传到服务器/opt/shdir目录下

initCaHome.sh -- 证书服务初始化脚本

addServer.sh  -- 新增应用初始化脚本

generateServerCert.sh / generateServerCertForIIS.sh  -- 签发指定应用服务端证书

addClientCert.sh  -- 签发指定应用客户端证书

openssl.cnf   -- 配置文件(包含默认配置,可根据需要修改)

为脚本配置执行权限

  1. chmod +x /opt/shdir/*.sh

三、 执行证书服务初始化命令

  1. /opt/shdir/initCaHome.sh /opt/ca_ws

$1 为指定的证书工作目录

此脚本执行后,会生成如下目录和文件:

/opt/ca_ws

/opt/ca_ws/rootca

/opt/ca_ws/rootca/private

/opt/ca_ws/rootca/private/ca.key

/opt/ca_ws/rootca/cert

/opt/ca_ws/rootca/cert/ca.crt

/opt/ca_ws/apps

/opt/ca_ws/conf

/opt/ca_ws/conf/openssl.cnf

/opt/ca_ws/conf/index.txt

/opt/ca_ws/conf/serial

第四部分:IIS服务应用

一、生成IIS服务器证书申请

此处使用一台Window server 2008 R2 的机器作为测试机,添加Web服务器角色后,

进入服务器管理器,找到 Internet 信息服务(IIS)管理器,点击右侧起始页下的节点

右侧点击进入服务器证书,右侧操作栏点击创建证书申请

申请证书,输入如下内容(根据需要填写),示例如下:

通用名称:www.spads.cn

组织:spads

组织单位:spads

城市/地点:Beijing

省/市/自治区:Beijing

国家/地区:CN

点击下一步

加密服务提供程序属性,默认,点击下一步

为证书申请一个文件名,选择本地磁盘一个路径(E:\server_req.txt),点击完成。

此时得到一个IIS证书申请文件E:\server_req.txt。

注:server_req.txt 为默认文件名,不可更改(之后的脚本已应用)。

注:检查证书服务配置文件要求,证书之间需保持一致的信息项如下:

  1. [ policy_match ]
  2. countryName = match
  3. stateOrProvinceName = match
  4. organizationName = match
  5. organizationalUnitName = optional
  6. commonName = supplied
  7. name = optional
  8. emailAddress = optional

可调整配置文件 match 更改为optional。

二、签发服务端证书和客户端证书。

1 证书服务器上,执行脚本,初始应用证书目录。

  1. /opt/shdir/addServer.sh /opt/ca_ws testIIS

$1 为指定的证书工作目录

$2 为应用名称

此脚本执行后,会生成如下目录

/opt/ca_ws/apps/testIIS

/opt/ca_ws/apps/testIIS/server

/opt/ca_ws/apps/testIIS/server/private

/opt/ca_ws/apps/testIIS/server/cert_req

/opt/ca_ws/apps/testIIS/server/cert

/opt/ca_ws/apps/testIIS/client

/opt/ca_ws/apps/testIIS/client/private

/opt/ca_ws/apps/testIIS/client/cert_req

/opt/ca_ws/apps/testIIS/client/cert

2 上传IIS证书请求文件

将IIS证书申请文件(server_req.txt),上传到/opt/ca_ws/apps/testIIS/server/cert_req 目录下

3 执行命令,签发服务端证书

  1. /opt/shdir/generateServerCertForIIS.sh /opt/ca_ws testIIS

$1 为指定的证书工作目录

$2 为应用名称

此脚本执行后,会生成如下文件

/opt/ca_ws/apps/testIIS/server/key/server.key

/opt/ca_ws/apps/testIIS/server/cert/server.pem

此时可得到签发出的IIS服务端证书为 /opt/ca_ws/apps/testIIS/server/cert/server.pem

注:此脚本执行过程中,会提示是否签名以及是否提交,均需输入y

4 执行命令,签发客户端证书

  1. /opt/shdir/addClientCert.sh /opt/ca_ws/ testIIS 3

$1 为指定的证书工作目录

$2 为应用名称

$3 为客户端编号

此脚本执行后,会生成如下文件:

/opt/ca_ws/apps/testIIS/client/key/client3.key

/opt/ca_ws/apps/testIIS/client/cert_req/client3.csr

/opt/ca_ws/apps/testIIS/client/cert/client3.crt

/opt/ca_ws/apps/testIIS/client/key/client3.p12(含私钥,可以导入IE浏览器)

注:此脚本执行过程中,会提示是否签名以及是否提交,均需输入y,同时会导出带有私钥的客户端证书,会提示定义输出密码。

注:脚本中使用默认的CN信息生成规则,如果需要使用CN变量绑定登录用户名称,可以动态修改或者将此信息更改为变量。

三、IIS 应用证书开启HTTPS双向认证

1 从证书服务器下载根证书、签发的服务端证书和客户端证书

/opt/ca_ws/rootca/cert/ca.crt

/opt/ca_ws/apps/testIIS/server/cert/server.pem

/opt/ca_ws/apps/testIIS/client/cert/client3.p12

2 安装根证书导入到IIS服务器

拷贝根证书(ca.crt),和服务器证书(server.pem)到IIS所在服务器,双击根证书(ca.crt),导入到受信任的根证书颁发机构/本地计算机(需勾选显示物理存储) 目录中

3 导入服务器证书

打开Internet 信息服务(IIS)管理器,点击右侧起始页下的节点

右侧点击进入服务器证书,右侧操作栏点击  【完成证书申请】,指定server.pem。完成服务器证书导入。

注:导入后,可双击打开列表中的证书,选择复制到文件,可以导出带私钥的服务器证书。

注:手工记录证书序列号,如果刷新列表,安装的证书消失,需要进入命令行修复证书(certutil -repairstore my 证书序列号)。

4 网站配置启用SSL

检查网站是否已经绑定了HTTPS,如果存在,删除。

增加绑定https,选择刚刚导入的服务器证书。

从功能窗口点击进入SSL配置,勾选必须,开启双向认证(客户端提供证书)。

5 客户端验证

拷贝根证书(ca.crt) 和客户端证书(client6.p12)到客户端机器上尝试。

未安装客户端证书,访问被限制

安装客户端证书,可以访问。

注:客户端安装: 双击客户端证书(client6.p12),导入到个人目录中。同时需在IE浏览器选项中,找到内容——点击清空SSL状态,并重启浏览器。

注:需要安装根证书,可正常访问到服务。

注:windows server 2008 R2 本机对证书有特殊限制(要求域名访问),所以需要在外部机器(Window7/10)进行测试

第五部分、Tomcat 服务应用

一、签发服务端证书和客户端证书

1 证书服务器上,执行脚本,初始应用证书目录。

  1. /opt/shdir/addServer.sh /opt/ca_ws testTomcat

$1 为指定的证书工作目录

$2 为应用名称

2 签发服务器证书

$1 为指定的证书工作目录

$2 为应用名称

$3 为客户端编号

注:此处会导出带有私钥的客户端证书,会提示定义输出密码。

此时得到

服务端证书为 /opt/ca_ws/apps/testTomcat/server/cert/server.crt

证书私钥为 /opt/ca_ws/apps/testTomcat/server/private/server.key

3 签发客户端证书

  1. /opt/shdir/addClientCert.sh /opt/ca_ws/ testTomcat 3

$1 为指定的证书工作目录

$2 为应用名称

$3 为客户端编号

注:此处会导出带有私钥的客户端证书,会提示定义输出密码。

4 导出Tomcat配置所需项

获取信任密钥库

  1. keytool -import -file $1 -alias firstCA -keystore $2

$1 根证书路径 /opt/ca_ws/rootca/cert/ca.crt

$2 输出路径 /opt/ca_ws/apps/testTomcat/server/cert/myTrustStore

获取服务端证书

  1. openssl pkcs12 -export -in $1 -inkey $2 -certfile $3 -out $4

$1 服务端证书路径 /opt/ca_ws/apps/testTomcat/server/cert/server.crt

$2 服务端私钥路径 /opt/ca_ws/apps/testTomcat/server/private/server.key

$3 根证书路径 /opt/ca_ws/rootca/cert/ca.crt

$4 输出路径 /opt/ca_ws/apps/testTomcat/server/cert/server.p12

二、Tomcat 应用证书开启HTTPS双向认证

1 拷贝文件

下载 myTrustStore、server.p12,并拷贝 到 tomcat/conf 目录下

2 单向SSL配置(tomcat/conf/server.xml)

  1. <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
  2.  
  3. maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
  4.  
  5. clientAuth="false" sslProtocol="TLS"
  6.  
  7. keystoreFile="conf/server.p12" keystoreType="PKCS12" keystorePass="zzzzzz" />

3 双向SSL配置

  1. <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
  2.  
  3. maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
  4.  
  5. clientAuth="true" sslProtocol="TLS"
  6.  
  7. keystoreFile="conf/server.p12" keystoreType="PKCS12" keystorePass="zzzzzz"
  8.  
  9. truststoreFile="conf/myTrustStore" truststoreType="JKS" truststorePass="zzzzzz"/>

三、客户端验证

未安装客户端证书,访问被限制

安装客户端证书,可以访问。

[证书服务器 第二篇] 基于OpenSSL 在 CentOS6 系统上 搭建自签证书服务,并应用于Web容器的更多相关文章

  1. Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇

    Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.试验架构说明 node101 ...

  2. 基于Hexo且在GitHub上搭建博客

    title: 基于Hexo且在GitHub上搭建博客 Welcome to Fofade's Blog! 搭建初衷 大大小小,大学两年,玩了很多,也学了很多. 回首望之,曾经不知道的,现在是知道了,但 ...

  3. CENTOS6.6上搭建单实例ORACLE12C

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 自己在centos6.6上搭建的单实例oracle12c 由 ...

  4. 第二篇 基于.net搭建热插拔式web框架(沙箱的构建)

    上周五写了一个实现原理篇,在评论中看到有朋友也遇到了我的问题,真的是有种他乡遇知己的感觉,整个系列我一定会坚持写完,并在最后把代码开源到git中.上一篇文章很多人看了以后,都表示不解,觉得不知道我到底 ...

  5. 解决centos6系统上python3—flask模块的安装问题

    Flask 是一个使用 Python 编写的轻量级 Web 框架(所以我们前面花了那么多时间安装 Python3 呀).它被称为微型架构,因为其使用非常简单的核心以及功能丰富的扩展.虽然 Flask ...

  6. 使用基于 PHP 的开源软件 YOURLS 搭建短链接地址服务

    使用基于 PHP 的开源软件 YOURLS搭建 系统配置 php7.1+mysql5.7+nginx 下载源代码 git clone https://github.com/YOURLS/YOURLS. ...

  7. Linux CentOS6.5上搭建环境遇到的问题

    1.卸载CentOS自带的JDK 查看centos上 安装的jdk:rpm -qa|grep jdk 出现如下: java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86 ...

  8. Java系列--第二篇 基于Maven的Android开发HelloAndroidWorld

    曾经写过一篇Android环境配置的随笔,个人感觉特繁琐,既然有Maven,何不尝试用用Maven呢,经网上搜索这篇文章但不限于这些,而做了一个基于Maven的Android版的Hello Andro ...

  9. 网络编程[第二篇]基于udp协议的套接字编程

    udp协议下的套接字编程 一.udp是无链接的    不可靠的 而上篇的tcp协议是可靠的,会有反馈信息来确认信息交换的完成与否 基于udp协议写成的服务端与客户端,各司其职,不管对方是否接收到信息, ...

随机推荐

  1. RTC实时时钟驱动

    RTC(Real-Time Clock)实时时钟为操作系统提供了一个可靠的时间,并且在断电的情况下,RTC实时时钟也可以通过电池供电,一直运行下去. RTC通过STRB/LDRB这两个ARM指令向CP ...

  2. 【SharePoint】K2 for SharePoint 安装笔记【未完工】

    0.安装环境说明 0.1.软件版本 OS : Window Server 2012 标准版 SharePoint : 2013标准版 K2 : 4.6.9 0.2.环境结构 SharePoint 20 ...

  3. STL之pair类型具体分析

    pair定义于头文件utility中.基本的作用是将两个数据组合成一个数据,两个数据能够是同一类型或者不同类型. pair类型提供的操作: pair<T1,T2> p1; pair< ...

  4. HDU 4355 Party All the Time(三分|二分)

    题意:n个人,都要去參加活动,每一个人都有所在位置xi和Wi,每一个人没走S km,就会产生S^3*Wi的"不舒适度",求在何位置举办活动才干使全部人的"不舒适度&quo ...

  5. vue2.X computed 计算属性

    需求:数据msg值为12345,我们现在需要反向显示成54321. 1.在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <! ...

  6. oracle select into相关

    自定义参数输出: declare v_test integer :=0 ;beginselect count(*) into v_test  from tf_estate_card t ;dbms_o ...

  7. RelativeLayout布局(仅在RelativeLayout中有效)

    在父亲布局的相对位置 android:layout_alignParentLeft="true"     //在布局左边 android:layout_alignParentRig ...

  8. SAS学习经验总结分享:篇三—SAS函数

    SAS函数学习 文章为原创,禁止复制或转载,转载请标明出处, http://www.cnblogs.com/smallcrystal/p/4842346.html 1.函数输写格式: 1)一般书写格式 ...

  9. js玩转数字----取整,四舍五入,数字字符串转换

    取整: 向下取整Math.floor(),向上取整Math.ceil(),四舍五入Math.round()),保留有效数位n.toFixed(),产生大于等于0小于1的随机数Math.random() ...

  10. 【转载】ASP.Net请求处理机制初步探索之旅 - Part 3 管道

    开篇:上一篇我们了解了一个ASP.Net页面请求的核心处理入口,它经历了三个重要的入口,分别是:ISAPIRuntime.ProcessRequest().HttpRuntime.ProcessReq ...