1

我使用 HTTPS 选项设置 Secure Gateway 的目的地 + 客户端 TLS:启用以访问远程 HTTPS REST API,其中 CN 是 IP 地址。

在此处输入图像描述

当我执行 trx 时,安全网关客户端收到错误“IP:192.168.56.1 不在证书列表中:”。没有CN名称信息。如果证书尚未上传到 SG,则有关“安全网关客户端故障排除”的错误消息为“DEPTH_ZERO_SELF_SIGNED_CERT”。所以我认为证书已正确上传,但 SG 客户端未解析 CN。

Secure Gateway 客户端故障排除
https://www.ng.bluemix.net/docs/troubleshoot/SecureGateway/ts_index-gentopic1.html#ts_sg_010

你能教我 Secure Gateway 客户端是否支持自签名证书,其中 CN 是 IP 地址吗?

安全网关客户端的日志

[2015-07-06 08:16:26.548] [INFO] 连接 #55 正在建立到 192.168.56.1:443
[2015-07-06 08:16:26.580] [INFO] 连接 #55 已建立到 192.168.56.1 :443
[2015-07-06 08:16:26.656] [错误] 到目标
192.168.56.1:443 的连接 #55 出现错误:IP:192.168.56.1 不在证书列表中:
[2015-07-06 08: 16:26.676] [INFO] 到 192.168.56.1:443 的连接 #55 已关闭

上传的证书文件
CN=192.168.56.1, OU=demo, O=qit, L=hakozaki, S=tokyo, C=Japan
在此处输入图像描述

4

1 回答 1

0

如果您查看错误消息,它没有说 CN,(例如 [ERROR] Connection # had error: Host: . is not cert's CN: ),而是证书的列表,这让我相信您已经生成了您的自签名证书不正确。问题是使用带有 IP_Address 的 FQDN 或 CN 生成证书。这将不起作用,因为仅在使用 SAN 时才支持 IP 地址。

使用openssl生成IP为CN的证书方法:

1)创建一个openssl配置文件,我从/usr/lib/ssl/openssl.cnf复制了我的

2) 将alternate_names 部分添加到文件中,如下所示:

[ alternate_names ]
IP.1 = <my application's ip>

3) 在 [ v3_ca ] 部分,添加以下行:

subjectAltName = @alternate_names

4) 在 CA_default 部分下,取消注释 copy_extensions:

# Extension copying option: use with caution.
copy_extensions = copy

5)生成私钥:openssl genrsa -out private.key 3072

6)带有关于组织选项的生成证书:openssl req -new -x509 -key private.key -sha256 -out certificate.pem -days 730 -config

7) 合并文件:cat private.key certificate.pem > SAN.pem

8) 将 SAN.pem 文件作为客户端 TLS 证书加载到您的目的地。

9) 将 SAN.pem 文件加载到您的本地应用程序中并重新启动。

10) 您的目的地可以配置为 TCP、HTTP 或 HTTPS,您的云端应用程序现在应该能够连接到您的本地应用程序。

从中得到: 如何使用 OpenSSL 生成带有 SubjectAltName 的自签名证书?

于 2015-07-09T12:16:12.803 回答