Weblogic配置SSL全过程

1 基本原理

1.1 SSL简介

SSL 代表安全套接字层,主要用于两个目的:

  • 验证网站的身份以及(可选)客户身份
  • 在程序之间建立安全的加密连接
    Weblogic配置SSL全过程_第1张图片

SSL 协议为通过网络连接的应用程序提供安全性。

具体来说,SSL 协议提供以下内容:

  • 应用程序交换的数据的加密
  • 应用程序可以用来验证彼此身份的机制
  • 数据完整性,从而保护在客户端和服务器之间流动的数据免受第三方篡改

当使用 SSL 协议时,目标总是向发起者验证自己。可选地,如果目标请求它,发起者可以向目标验证自己。加密使通过网络传输的数据只能被预期的接收者理解。SSL 连接以握手开始,在此期间应用程序交换数字证书,就要使用的加密算法达成一致,并生成用于会话剩余部分的加密密钥。

注意: Oracle WebLogic Server 12c 支持的唯一 SSL 堆栈是 Java 安全套接字扩展 (JSSE) 堆栈。基于 Certicom 的 SSL 实现已被移除且不再受支持。

1.2 SSL 通讯

客户端和服务器之间有两种 SSL 方法:

  • 单向 SSL - 使服务器能够向客户端标识自己

    使用单向 SSL,服务器必须向客户端提供证书,但客户端不需要向服务器提供证书。客户端必须对服务器进行身份验证,但服务器接受来自任何客户端的连接。单向 SSL 在 Internet 上很常见,客户希望在共享个人数据之前创建安全连接。通常,客户端也会使用 SSL 登录,以便服务器可以对其进行身份验证。

  • 双向 SSL - 使客户端能够向服务器识别自己

    使用双向 SSL(带有客户端身份验证的 SSL),服务器向客户端提供证书,客户端向服务器提供证书。WebLogic Server 可以配置为要求客户端在完成 SSL 连接之前提交有效且受信任的证书。

1.3 证书体系

通常经过国际认证的CA机构,通过付费形式可以将他们CA证书集成到各个浏览器内置存储空间里,用户打开浏览器访问网页时,浏览器会自动匹配内置的证书,从而实现证书的验证。也就是只要我们付费让这些CA机构给我们签署证书后,我们的网站在浏览器中就会显示安全的HTTPS。

当然如果我们自己创建一个证书,也可以达到这样的效果,只不过需要让使用我们网站的用户,手动去安装我们的证书(从证书的下发到安装,相对来说肯定是不如使用CA安全的)。

那么在下面的文档中,我们将需要有两部分证书:

  • CA Root 自签名证书
  • 中级证书(我们的系统使用的证书)

其中,CA Root证书,模拟的就是CA机构的证书,用于签发中级证书,中级证书则是可以直接作为Web系统SSL的证书,以实现SSL协议通讯。

通常在Web系统中,我们只要实现单向SSL通信即可,下面也仅记录单向SSL的实施过程。

2 注意事项

  • 请安装与Weblogic、Web项目匹配的JDK版本(大版本一致即可)。
  • 进入开发者本地电脑中JDK的安装目录中的bin目录,通过调用keytool工具实现证书的创建、签名、导出。
  • 以下介绍使用的是Windows平台的命令。
  • 以下主要针对单向SSL的实施过程进行说明。
  • 下文中任何带文件路径的命令,请提前创建好目录,否则执行命令最终都会失败。

3 生成证书步骤及说明

3.1 创建CA Root自签名证书

  1. 创建自签名的CA Root证书

    keytool.exe -genkeypair -alias XX_CA_Root -keyalg RSA -validity 3650 -keystore D:/path/XX_CA_Root.jks
    

    说明:

    • 命令交互部分:

      输入密钥库口令:
      再次输入新口令:
      您的名字与姓氏是什么?
        [Unknown]:  XX_CA_Root
      您的组织单位名称是什么?
        [Unknown]:  XX_CA_Root
      您的组织名称是什么?
        [Unknown]:  XX_CA_Root
      您所在的城市或区域名称是什么?
        [Unknown]:  shanghai
      您所在的省/市/自治区名称是什么?
        [Unknown]:  shanghai
      该单位的双字母国家/地区代码是什么?
        [Unknown]:  cn
      CN=XX_CA_Root, OU=XX_CA_Root, O=XX_CA_Root, L=shanghai, ST=shanghai, C=cn是否正
      确?
        [否]:  y
      
      输入  的密钥口令
              (如果和密钥库口令相同, 按回车):
      
      • 最后一步输入的密钥请保持与第一次输入的密钥一致,否则使用过程中可能会出现异常。
      • 根证书的前3个交互项只要统一写颁发根证书的机构名称即可。
      • 城市和省市如实填写即可。
      • 国家代码固定填写cn,代表中国。
      • 另外,请将实际填写的内容保存好,以便证书到期后能够及时更换而不需要变更证书信息。
    • -genkeypair:生成密钥对,它的选项包括:

      • -keyalg:密钥算法名称,指定RSA;
      • -validity:用于指定证书有效期(天),建议5~10年,然后去主动更换一次,可以让系统相对更安全一些;
      • -keystore:密钥库名称,我们此处由于要给Weblogic使用,就将文件扩展名指定为.jks
  2. 通常个人站点只要生成根证书,并离线保存好即可。

  3. 如果要让用户的浏览器信任由根证书签发的证书(在浏览器上将你的站点https标记为安全的),就需要导出根证书,让用户在个人电脑上安装(可选)

    keytool.exe -exportcert -alias XX_CA_Root -keystore D:/path/XX_CA_Root.jks -file D:/path/XX_CA_Root.cer
    

    说明:

    • -exportcert:导出证书,它的选项有:
      • -alias:填CA Root的别名;
      • -keystore:密钥库名称;
      • -file:输出文件名。
    • xxx.cer:是导出的可安装在个人电脑上的证书。需要将该证书以安全的途径,下发给用户,让用户自行在个人电脑上安装,注意需要安装在“受信任的根证书颁发机构”证书域下。

3.2 创建中级(系统)证书

  1. 创建一个新的中级证书

    keytool.exe -genkeypair -alias XX_CA_YSystem -keyalg RSA -validity 3650 -keystore D:/path/XX_CA_YSystem.jks
    

    说明:

    • 提示,可以通过命令选项指定证书的密钥库密钥和私钥:

      keytool.exe -genkeypair -alias yyy -keyalg RSA -validity 3650 -keystore -keypass 123456 -storepass 123456 D:/path/yyy.jks
      
      • -storepass:指定密钥库密钥。
      • -keypass:指定证书私钥。
      • 建议storepass和keypass设置一样,避免混淆(若出于安全性考虑,应该设置为不一样的值)。
      • 出于证书安全性考虑,建议不使用这种明文命令形式设置密钥。
    • 命令交互部分:

      输入密钥库口令:
      再次输入新口令:
      您的名字与姓氏是什么?
        [Unknown]:  XX_CA_YSystem
      您的组织单位名称是什么?
        [Unknown]:  XX_CA_YSystem
      您的组织名称是什么?
        [Unknown]:  XX_CA_Root
      您所在的城市或区域名称是什么?
        [Unknown]:  shanghai
      您所在的省/市/自治区名称是什么?
        [Unknown]:  shanghai
      该单位的双字母国家/地区代码是什么?
        [Unknown]:  cn
      CN=XX_CA_YSystem, OU=XX_CA_YSystem, O=XX_CA_Root, L=shanghai, ST=shanghai, C=cn
      是否正确?
        [否]:  y
      
      输入  的密钥口令
              (如果和密钥库口令相同, 按回车):
      
      • 第一次输入的密钥和最后一次输入的密钥应保持一致。
      • 姓氏、组织单位可以任意填写(外网一般写的是域名,这样才能匹配,内网可以写ip),组织名称建议填写根证书机构名称。
      • 城市和省市都保持与根证书一致。
      • 国家统一填写cn,代表中国。
  2. 生成证书签署请求文件(生成一个待CA机构签署的文件)

    keytool.exe -certreq -alias XX_CA_YSystem -keystore D:/path/XX_CA_YSystem.jks -file D:/path/XX_CA_YSystem.csr
    

    说明:

    • 此处需要输入中级证书的密钥。
    • -certreq:生成证书请求,其选项有:
      • -alias:填中级证书的别名;
      • -keystore:密钥库名称;
      • -file:输出的证书文件名称。
    • csr格式是待签署的证书文件。

3.3 签署中级(系统)证书

  1. 利用CA Root证书对中级证书进行签署

    keytool.exe -gencert -alias XX_CA_Root -keystore D:/path/XX_CA_Root.jks -infile D:/path/XX_CA_YSystem.csr -outfile D:/path/XX_CA_YSystem.cer
    

    说明:

    • 此处需要输入根证书的密钥。
    • -gencert:根据证书请求生成证书,其选项有:
      • -alias:别名,填CA Root证书的别名;
      • -infile:证书请求文件名;
      • -outfile:输出的证书文件名。
    • 此处输出的XX_CA_YSystem.cer文件就是签署完毕的中级证书。

3.4 生成Weblogic所需的SSL文件

  1. 将CA Root证书导入中级证书keystore文件

    keytool.exe -import -alias XX_CA_Root -keystore D:/path/XX_CA_YSystem.jks -trustcacerts -file D:/path/XX_CA_Root.cer -noprompt
    
    
    • 此处要输入中级证书的密钥
  2. 将签署好的中级证书导入keystore文件

    keytool.exe -import -alias XX_CA_YSystem -keystore D:/path/XX_CA_YSystem.jks -trustcacerts -file D:/path/XX_CA_YSystem.cer -noprompt
    
    
    • 此处要输入中级证书的密钥
  3. 导入完毕后,检查一下中级keystore文件

    keytool.exe -list -v -keystore D:\path\XX_CA_YSystem.jks
    
    

    正常看到的应该是下面这样:

    密钥库类型: JKS
    密钥库提供方: SUN
    
    您的密钥库包含 2 个条目
    
    别名: xx_ca_ysystem
    创建日期: 2022-3-23
    条目类型: PrivateKeyEntry
    证书链长度: 2
    证书[1]:
    所有者: CN=XX_CA_YSystem, OU=XX_CA_YSystem, O=XX_CA_Root, L=shanghai, ST=shangha
    i, C=cn
    发布者: CN=XX_CA_Root, OU=XX_CA_Root, O=XX_CA_Root, L=shanghai, ST=shanghai, C=c
    n
    序列号: 611c8668
    有效期开始日期: Wed Mar 23 10:22:31 CST 2022, 截止日期: Tue Jun 21 10:22:31 CST
    2022
    证书指纹:
             MD5: 58:1D:8D:67:F5:29:81:2D:B9:CD:B1:99:E5:92:D9:53
             SHA1: D8:FF:D7:6E:6D:8C:4D:54:F0:A1:19:A6:38:85:5E:64:05:5C:58:34
             SHA256: 3E:47:92:12:43:2B:67:0A:92:DB:9A:45:00:7E:BD:A5:EA:85:F9:88:B3:
    51:30:67:7A:76:29:9B:3E:4C:FB:83
             签名算法名称: SHA256withRSA
             版本: 3
    
    扩展:
    
    #1: ObjectId: 2.5.29.35 Criticality=false
    AuthorityKeyIdentifier [
    KeyIdentifier [
    0000: DD A5 B7 2D 23 C1 55 2F   7E 7F 04 0F 91 51 B0 56  ...-#.U/.....Q.V
    0010: C9 23 DA 6C                                        .#.l
    ]
    ]
    
    #2: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 02 8B 77 8D 5A 73 17 8E   4A 9E 94 47 98 6A F4 20  ..w.Zs..J..G.j.
    0010: 44 53 3E 73                                        DS>s
    ]
    ]
    
    证书[2]:
    所有者: CN=XX_CA_Root, OU=XX_CA_Root, O=XX_CA_Root, L=shanghai, ST=shanghai, C=c
    n
    发布者: CN=XX_CA_Root, OU=XX_CA_Root, O=XX_CA_Root, L=shanghai, ST=shanghai, C=c
    n
    序列号: 57b5fd49
    有效期开始日期: Wed Mar 23 10:09:29 CST 2022, 截止日期: Sat Mar 20 10:09:29 CST
    2032
    证书指纹:
             MD5: FC:0C:C9:BF:61:D9:5D:41:4F:5C:2A:6E:61:3B:82:6E
             SHA1: 69:54:D2:9D:5E:50:5F:60:C1:AB:04:BF:C6:0C:BD:D1:1F:47:D6:B7
             SHA256: 42:52:08:8A:56:DE:69:99:8C:F3:99:E8:03:88:4C:60:A6:E5:91:A4:9D:
    69:81:C5:85:DC:78:C0:BC:F2:B9:C3
             签名算法名称: SHA256withRSA
             版本: 3
    
    扩展:
    
    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: DD A5 B7 2D 23 C1 55 2F   7E 7F 04 0F 91 51 B0 56  ...-#.U/.....Q.V
    0010: C9 23 DA 6C                                        .#.l
    ]
    ]
    
    
    
    *******************************************
    *******************************************
    
    
    别名: xx_ca_root
    创建日期: 2022-3-23
    条目类型: trustedCertEntry
    
    所有者: CN=XX_CA_Root, OU=XX_CA_Root, O=XX_CA_Root, L=shanghai, ST=shanghai, C=c
    n
    发布者: CN=XX_CA_Root, OU=XX_CA_Root, O=XX_CA_Root, L=shanghai, ST=shanghai, C=c
    n
    序列号: 57b5fd49
    有效期开始日期: Wed Mar 23 10:09:29 CST 2022, 截止日期: Sat Mar 20 10:09:29 CST
    2032
    证书指纹:
             MD5: FC:0C:C9:BF:61:D9:5D:41:4F:5C:2A:6E:61:3B:82:6E
             SHA1: 69:54:D2:9D:5E:50:5F:60:C1:AB:04:BF:C6:0C:BD:D1:1F:47:D6:B7
             SHA256: 42:52:08:8A:56:DE:69:99:8C:F3:99:E8:03:88:4C:60:A6:E5:91:A4:9D:
    69:81:C5:85:DC:78:C0:BC:F2:B9:C3
             签名算法名称: SHA256withRSA
             版本: 3
    
    扩展:
    
    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: DD A5 B7 2D 23 C1 55 2F   7E 7F 04 0F 91 51 B0 56  ...-#.U/.....Q.V
    0010: C9 23 DA 6C                                        .#.l
    ]
    ]
    
    
    
    *******************************************
    *******************************************
    
    

4 Weblogic SSL配置

  • 登录Weblogic管理端,并按如下顺序进入配置界面:

Weblogic配置SSL全过程_第2张图片

  • 打开ssl监听,推荐改为443(默认的ssl端口,这样用户访问不需要输入端口)

Weblogic配置SSL全过程_第3张图片

  • 将右侧配置界面的滚动条拉到底部,点击保存

  • 保存完毕后,切换到“密钥库”标签

Weblogic配置SSL全过程_第4张图片

  • 更改密钥库

Weblogic配置SSL全过程_第5张图片

Weblogic配置SSL全过程_第6张图片

  • 输入以下内容,并点击保存,其中密码短语填写证书密钥即可

Weblogic配置SSL全过程_第7张图片

  • 密钥库:选择 “定制身份和 JAVA 标准信任”。

  • 定制身份密钥库:请填写您的 JKS 证书文件路径,例如:C:\temp\cloud.tencent.com.jks

  • 定制身份密钥库类型:请填写中级证书密钥。

  • 定制身份密钥库密码短语:请填写中级证书密钥。

  • 确认定制身份密钥库密码短语:请再次输入您的密码。

  • 切换到SSL标签下,修改表单内容并保存

Weblogic配置SSL全过程_第8张图片

  • 身份和信任位置:选择密钥库。
  • 私有密钥别名:中级证书密钥的别名。
  • 私有密钥密码:中级证书密钥。
  • 确认私有密钥密码:中级证书密钥。
  • 注意,可以展开高级看一眼,主机名验证 应设置为“无”;双向客户机证书行为 设为"不请求客户机证书"。

5 证书安装

CA Root、中级证书需要以安全的方式,下发给用户,让其安装在自己的个人电脑上,下面以Windows平台为例,介绍安装步骤。

  1. 双击打开XX_CA_YSystem.cer

Weblogic配置SSL全过程_第9张图片

  1. 点击安装证书

    Weblogic配置SSL全过程_第10张图片

  2. 点击下一步,并按照下图顺序操作

    Weblogic配置SSL全过程_第11张图片

  3. 点击完成,后续的提示选择“是”,完成安装。

    Weblogic配置SSL全过程_第12张图片

    Weblogic配置SSL全过程_第13张图片

6 其他

其他的相关配置需要研发人员自行查阅相关文档和互联网搜索引擎,例如:如何配置Web项目的web.xml使其强制从http协议转发到https协议上。

你可能感兴趣的:(文档,SSL,Weblogic)