删除或自动输入 haproxy ssl 的 pem 密码;Chrome 仍会警告 CA 未签名

SVi*_*ill 2 ssl openssl certificate haproxy keytool

我最近收到了一个用于 haproxy SSL 终止的签名证书。为了让 haproxy 使用它,我需要将 jks 文件转换为 pem 文件。首先,我将收到的 cer 文件转换为 crt,因为我之前遇到过错误,haproxy 无法在 pem 文件中找到 crt 文件。对所有证书执行此操作:

$ openssl x509 -inform PEM -in <CER file here> -out <CRT output file>
Run Code Online (Sandbox Code Playgroud)

然后我将根证书、中间证书和服务证书导入到已经拥有私钥的密钥库:

keytool -importcert -file $CERT -alias $ALIAS -keystore test.jdk
Run Code Online (Sandbox Code Playgroud)

然后我将 jsk 文件转换为 p12 文件,然后将其转换为 pem 文件:

$ keytool -importkeystore -srckeystore test.jks -destkeystore test.p12 -srcstoretype jks -deststoretype pkcs12
Enter destination keystore password:
Re-enter new password:


$ openssl pkcs12 -in test.p12 -out test.pem
Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Run Code Online (Sandbox Code Playgroud)

这将生成具有以下格式的 pem 文件:

Bag Attributes
    friendlyName:
    localKeyID: 
-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----
Bag Attributes
    friendlyName:
subject=
issuer=
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Bag Attributes
    friendlyName:
subject=
issuer=
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Bag Attributes
    friendlyName: 
subject=
issuer=
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
Bag Attributes
    friendlyName:
    localKeyID:
subject=
issuer=
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

Run Code Online (Sandbox Code Playgroud)

显然,这里缺少很多信息,因为我不想在网上分享;然而,结构几乎相同。

当我将此链接到 haproxy 时:

frontend https
  maxconn 2000
  bind 0.0.0.0:4000 ssl crt /home/user/config/cert/test.pem
Run Code Online (Sandbox Code Playgroud)

我用 运行它haproxy -d -f haproxy.cfg,我被要求输入 PEM 密码短语。我需要能够在服务器启动时自动启动 haproxy,所以每次我想运行它时我都不能输入它。有没有办法删除密码短语,或者生成一个没有密码的 pem 文件?或者我可以通过脚本提供吗?我用来在服务器启动时启动 haproxy 的脚本就是你在上面看到的命令,用 nohup 重定向输出。

此外,当我转到 haproxy 前端的其中一项服务时,Chrome 仍然警告我 CA 不受信任,就像我使用自签名证书时一样。除了上面的内容,我还有什么需要做的吗?

Ale*_*dar 5

您需要将受密码保护的密钥复制到不受密码保护的密钥。

openssl rsa -in test.pem -out test-password-less.key
Run Code Online (Sandbox Code Playgroud)

要立即向 HAProxy 提供 PEM,您还需要证书。cat 两个文件到一个PEM 文件为 haproxy。

cat $CERT test-password-less.key > haproxy-test.pem
Run Code Online (Sandbox Code Playgroud)