我有一组密钥可以向某些外部服务器验证我的身份。他们都使用一个根CA常见发行版中未安装该软件。
我正在使用 Docker 映像验证外部服务器是否响应。
这是在 GitLab CI 脚本中,所以我保留它的格式。
CPI avail Ubuntu:
stage: checkCpiAvailability
image: ubuntu:18.04
script:
- apt update
- apt install -y curl wget unzip openssl openssh-client
- openssl version
- test/bench/curl/curlRequest.sh
卷曲命令:
curl -v \
--cacert "$SCRIPT_DIR/target/....crt" \
--key "$SCRIPT_DIR/target/temp.$KEY_FILENAME.private.key" \
--cert "$SCRIPT_DIR/target/temp.$KEY_FILENAME.client.crt:$KEY_PASS2" \
--header "Content-Type: application/soap+xml; charset=utf-8" \
--data "@$SCRIPT_DIR/../soapSamples/queryRequest-sampleFromSpec.xml" \
"$SERVICE_URL" \
当我使用 Ubuntu 映像执行此操作时,它可以工作。
但是当我对 Centos 7 映像执行相同操作时,它失败了。
CPI avail Centos7:
stage: checkCpiAvailability
image: centos:7
script:
- yum -y update
- yum -y install curl wget unzip openssl openssh-clients
- openssl version
- test/bench/curl/curlRequest.sh
错误信息:
* unable to load client key: -8178 (SEC_ERROR_BAD_KEY)
* NSS error -8178 (SEC_ERROR_BAD_KEY)
* Peer's public key is invalid.
* Closing connection 0
curl: (58) unable to load client key: -8178 (SEC_ERROR_BAD_KEY)
SO 上有一些问题可以解决这个错误,但我想知道如果它使用 Ubuntu 映像,这是否是我的错。
我需要安装额外的东西吗?或者 Centos 是否有一些不同的设置和需求,例如我在其中一个答案中读到的密钥密码?我怎样才能让它和Ubuntu中一样呢?