zoukankan      html  css  js  c++  java
  • [证书服务器 第二篇] 基于OpenSSL 在 CentOS6 系统上 搭建自签证书服务,并应用于Web容器

    第一部分:概述

        。。

    第二部分:环境准备

    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]# ls
    bin        include         lib      README.html  THIRDPARTYLICENSEREADME-JAVAFX.txt
    COPYRIGHT  javafx-src.zip  LICENSE  release      THIRDPARTYLICENSEREADME.txt
    db         jre             man      src.zip
    [root@iZ2ze2pbmzw561v3fj8o3wZ jdk1.8.0_161]#

    配置环境变量

    vim ~/.bash_profile

    在文件中增加如下内容

    #JAVA_HOME
    export JAVA_HOME=/opt/jtools/java/jdk1.8.0_161
    export 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]#
    

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

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

    image

    证书服务部署时,需指定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)管理器,点击右侧起始页下的节点

    image

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

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

    通用名称: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

    image

    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,同时会导出带有私钥的客户端证书,会提示定义输出密码。

    image

    注:脚本中使用默认的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)管理器,点击右侧起始页下的节点

    image

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

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

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

    4 网站配置启用SSL

    2018-02-02_134144

    检查网站是否已经绑定了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 签发服务器证书

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

    $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"/>
    

     

    三、客户端验证

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

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

  • 相关阅读:
    【2020-05-26】急躁吃不了热豆腐
    【2020-05-25】信念不足
    【2020-05-24】让自己承认逃避还真不容易
    【2020-05-23】起风了,唯有努力生存。
    2017《面向对象程序设计》课程作业四
    2017《面向对象程序设计》课程作业三
    2017《面向对象程序设计》课程作业二
    2017《面向对象程序设计》课程作业一
    2017《面向对象程序设计》作业四
    2017《面向对象程序设计》寒假作业三
  • 原文地址:https://www.cnblogs.com/driftingshine/p/8393310.html
Copyright © 2011-2022 走看看