サーバーにPOST要求を送信するbashスクリプトを作成しました。要求には証明書署名要求が含まれており、サーバーはそれに署名して証明書を返します。 POSTの本文にCSRテキストをコピー&ペーストすると、POST要求は成功します。しかし、変数からCSRを読み込むと、POSTリクエストは失敗します。私は以下のプログラムのスニペットを添付しました。CSRを含むPOST要求がBashで失敗する
PROGRAM - バッシュ
openssl req -new -newkey rsa:2048 -nodes -out cert.csr -keyout priv.key -subj "/C=MyCountry/ST=MyState/L=MyCity/O=MyCompany/OU=MyDept/CN=MyComp"
if [ $? == 0 ]; then
csr=$(<cert.csr)
fi
response=$(curl -o - -s -w "%{http_code}\n" -X POST \
https://xxx.xxx.com/URI-END-POINT \
-H "authorization: $token" \
-H "content-type: application/json" \
-d '{
"digicert": {
"csr": "'$csr'",
"profileName": "pn123",
"signatureHash": "sh123",
"userPrincipalName": "pn123",
"validationScopeId": "vsi123"
},
"IccId": "sim123",
"MacAddress": "mac123"
}')
if [ $?==0 ]; then
status=$(echo $response | tail -c 4)
if [ "$status" == "$http_success" ]; then
echo -e "Request for certificate SUCCESS"
else
echo -e "Request for certificate FAILED with return code $status"
fi
else
echo -e "Request for certificate FAILED"
fi
OUTPUT - 上記のスクリプトでバッシュ
curl: option -----END: is unknown
curl: try 'curl --help' or 'curl --manual' for more information
、私はライン"CSR" を交換する場合: " '$のCSR'"、"csr": "---- BEGIN CERTIFICATE REQUEST ---- XXXXXXX ---- END CERTIFICATE REQUEST ----"、これは正常に動作します。
これをデバッグするのに手伝ってもらえますか?
ありがとうございます!
こんにちはKlemen ワーキングソリューションのchepnerの答え@を参照してください。 –