第一部分:概述

。。

第二部分:环境准备

1 操作系统

CentOS 6.x

2 安装openssl

yum install -y openssl

3 安装jdk

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

mkdir -p /opt/jtools

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

[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]# 

配置环境变量

vim ~/.bash_profile

在文件中增加如下内容

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

保存后,使环境变量生效

source ~/.bash_profile

查看Java版本

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

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

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

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

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

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

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

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

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

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

为脚本配置执行权限

chmod +x /opt/shdir/*.sh 

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

/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 为默认文件名,不可更改(之后的脚本已应用)。

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

[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
name = optional
emailAddress = optional

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

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

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 执行命令,签发服务端证书

/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 执行命令,签发客户端证书

/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 证书服务器上,执行脚本,初始应用证书目录。

/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 签发客户端证书

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

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

$2 为应用名称

$3 为客户端编号

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

4 导出Tomcat配置所需项

获取信任密钥库

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

获取服务端证书

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)

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"

               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS"

               keystoreFile="conf/server.p12"  keystoreType="PKCS12" keystorePass="zzzzzz" />

3 双向SSL配置

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"

               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

               clientAuth="true" sslProtocol="TLS"

               keystoreFile="conf/server.p12"  keystoreType="PKCS12" keystorePass="zzzzzz"

               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. asp.net获取请求的协议头是否启动了SSL(Https)

    方法: HttpContext.Current.Request.IsSecureConnection SLL:True HttpContext.Current.Request.Url.ToString ...

  2. Docking For WPF–AvalonDock

    桌面程序的应用,不可避免的就会用到大量的布局控件,之前的一个项目也想过去做类似于Visual Studio的那种灵活的布局控件,也就是界面上的控件能够实现拖拽放置.隐藏.窗口化等一系列的操作,但由于开 ...

  3. Enter Query Mode Search Tricks Using Enter_Query Built-in in Oracle Forms

    In this post you will learn how to specify any condition in enter query mode of Oracle Forms. Whenev ...

  4. tensorflow 运行 python convolutional.py时

    Traceback (most recent call last): File "convolutional.py", line 326, in <module> tf ...

  5. 【React Native开发】React Native移植原生Android项目(4)

    ),React Native技术交流4群(458982758),请不要反复加群!欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文章 ...

  6. Node.js学习入门手册

    Node.js 安装 1.下载http://nodejs.org/dist/v0.12.1/node-v0.12.1-x86.msi并完成安装 2.下载https://www.python.org/f ...

  7. 微信小程序 - gulp插件压缩(代码、图片等)

    最后更新时间: 2018.7.18 :更新了所有package.json插件版本以及修复极个别问题. 2018.8.12 : 增加提示,所有标签必须闭合(不然打包会报错) 2018.10.13:需要用 ...

  8. Archlinux 下的 VMWare Workstation 维护笔记

    印象中 Archlinux 下的 VMWare Workstation 总是出问题, 因此写这个帖子, 记录出问题时间/原因/解决方案. PS: 每次更新内核后可能需要重新编译 vmware 的内核模 ...

  9. Ubuntu安装vncserver实现图形化远程桌面

    安装 apt-get update apt-get install vnc4server 开启vnc服务 vncserver 首次启动会要求设置密码,后面可以使用vncpasswd修改: 看到 New ...

  10. shell查看系统基本信息脚本

    #!/bin/bash echo "IP:" ifconfig |grep "inet addr"|grep -v 127.0.0.1|awk '{print ...