[GH-ISSUE #617] [Bug] 部署到网宿 CDN Pro 时私钥加密错误 #409

Closed
opened 2026-03-03 01:03:06 +03:00 by kerem · 28 comments
Owner

Originally created by @Anbool on GitHub (Apr 15, 2025).
Original GitHub issue: https://github.com/certimate-go/certimate/issues/617

软件版本 / Release Version

v0.3.8

缺陷描述 / Description

我错了大哥,上次忘记回复你了。网宿给的 Shell 脚本示例我已经测试成功了:
其中的 时间戳 就是取值当前时间

#!/bin/bash
username="example_username"
apiKey="example_apiKey"
date=`env LANG="en_US.UTF-8" date -u "+%a, %d %b %Y %H:%M:%S GMT"`
password=`echo -en "$date" | openssl dgst -sha1 -hmac $apiKey -binary | openssl enc -base64`

# Generates IV and Key for private key encryption
aesivkey=$(echo -n "$date" | openssl dgst -sha256 -hmac "$apiKey" -r)
aes128cbciv=${aesivkey:0:32}
aes128cbckey=${aesivkey:32:32}

# Encrypts the private key
private_key='-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKEFGEArs8rr7mm95QdJiRkK4gNlHsovMEPToCdwh48r3Go9GssL/gD\nrPhHZvAII40rlOrxzgOJalfv47xic+vV5ifbBk9OMA+qwLlj/NnPG+33hCC2ALNg\nT1X/daj6KoHeCVyOS+0WZx+qfw/XU7keowWksTlvpfTdEXGTN6hja6kBjBOILmOv\nOpyKbU40yDf09a8xqaVhGnnRV+NZmmViL0p+s5n80h01tzFN6/bpYs8IA4TqIEDA\naEmNQmESVKQS/80grZ67Cbh7G98p/1r48DpEtnJ7jbAbK1hi9QDL+MDDl7++k7OP\nwBYmh0cUZym95aKSsYrQsvmyJKaLJeBpxb//8QIDAQABAoIBAAwVQd3JpWLjmAg0\n57+ijd2/jZdOePJiLYVndaZi4tzSM6G1MPvZxYW1/boHXgXTH5ev4uW44loJgXyl\nxok8JAWRocPssU7VAbZOj+RMVJmLcUknHPce6KOHZJNfmqtm/Gb/IldKdwyFWcrt\nttJp53Jgl/kOreEwyo5EU2rzqam26pr686gNVs3s35OPK1iWprd8KRTvCnj2JY2v\nss7OtJvny1WmaozMvBixBR9cqF8nu3XRlAR6vhIjjbgeNK4iWgBZRkXCp9+jJIhr\nZ0L6OyGUEhGZEd3J+jXic3DauyeNIfy4autHHsGWN33le+rmqAyRA7iLJKzuk1Ks\nwnH8MIECgYEA4XK2A7ZtI7Z5evQVlNuRbQBcYPeWVjbmAFVgXmS8cG0hjasjpRSO\nCPvyJ9Qhi14EYQKapr02vbYADPIk0s1xpT3CQWyzI11TzG/gxeLDGW2ceziWK+3I\nBAJ9F/B6F6Xmwkoe1dGTIf80+81atloV2UlE7+w2YovzxSzmqx4x+HkCgYEAxn+w\nAexWWKCySBoN3elnKQTl9ZAtF+S2dBDYOrFD1O/77KP+aemLXtpBPA3XqPZr7i9V\nv8+JkXK+Yxm2s1lny044jgMkcfMLEsNb7UuLZPALQXQBcEQD4blmWuU6k9rGP+Jd\n7g2XXDLLnvr0Vob/DRbV2s+knMmuH/t1Gp071TkCgYB49u+qdkuBCfuMeULLKDST\nY8otTSsg/zvRmf2nKC3jtOp39QefH7RGJcj8jdmhycRXuOn55TRl/i1wxMv1P75m\nhwifyg8kPoMkAjN8eftsvV9kzivlTiQv4pX0LleUMLPsM5Dv8Q8dAq4PHVQ624M1\nnxaaFQfpQGZ/uWPbFMyDIQKBgQCKlT0RqqoCCHdP5XjG9JxERBo0nmsNIm3LjLMa\nDwaXlNDivv/xe88E8wXWYqetXBWwXjXUy5V1CZIoaBxpDMNtangLleAM+i1B9Uip\n3DM+zmRdVxtmAOZg4mq2jRGfhn8gvO7tM2n4QbJtlTGfc3J/9fBqasu3dwrtY0a3\nxQyv6QKBgHKkrDB9MqY9NZwNsXrzVcqlPINlNnNNvxvIwS146lyX56AYbAubp3oR\ngsedNcoLw72jxAswBTKpjEPOAtPt2W/oGu1l9uLuaVhCMuxlAPsUpi4jGFhY9YJB\n\n\niSmpo0joR/GljOCWPnLzLOlpwHWT/RoqXlK3c+H8YrzsjJvZI7hs\n\n\n-----END RSA PRIVATE KEY-----'
encrypted_private_key=`echo -e $private_key | openssl aes-128-cbc -base64 -nosalt -K $aes128cbckey -iv $aes128cbciv`

# Create certificate
api_call="curl -i --url 'https://open.chinanetcenter.com/cdn/certificates'
			-X POST \
			-u $username:$password \
			-H 'Date: $date' \
                        -H 'Content-Type: application/json' \
			-H 'Accept: application/json'\
            -d '{
                \"name\":\"test_cert_creation\", \
                \"description\":\"test test\", \
                \"newVersion\": { \
                    \"comments\":\"some comments\", \
                    \"privateKey\":\"$encrypted_private_key\", \
                    \"certificate\":\"-----BEGIN CERTIFICATE-----\nMIIGDDCCA/SgAwIBAgICEAIwFEGJKoZIhvcNAQELBQAwdjELMAkGA1UEBhMCVUEx\nEzARBgNVBAgMCktoYXJraXZza2ExDDAKBgNVBAoMA05JWDELMAkGA1UECwwCUUEx\nFzAVBgNVBAMMDioubXd0cmlhbC5pbmZvMR4wHAYJKoZIhvcNAQkBFg90ZXN0bml4\nQGdnZy5jb20wHhcNMjEwNDEzMTc0MDU2WhcNMjYwNjAxMTc0MDU2WjCBgDELMAkG\nA1UEBhMCVUExEDAOBgNVBAgMB0tIQVJLSVYxCzAJBgNVBAcMAktIMQwwCgYDVQQK\nDANOSVgxCzAJBgNVBAsMAlFBMRcwFQYDVQQDDA4qLm13dHJpYWwuaW5mbzEeMBwG\nCSqGSIb3DQEJARYPbml4dGVzdEBuaXguY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEArs8rr7mm95QdJiRkK4gNlHsovMEPToCdwh48r3Go9GssL/gD\nrPhHZvAII40rlOrxzgOJalfv47xic+vV5ifbBk9OMA+qwLlj/NnPG+33hCC2ALNg\nT1X/daj6KoHeCVyOS+0WZx+qfw/XU7keowWksTlvpfTdEXGTN6hja6kBjBOILmOv\nOpyKbU40yDf09a8xqaVhGnnRV+NZmmViL0p+s5n80h01tzFN6/bpYs8IA4TqIEDA\naEmNQmESVKQS/80grZ67Cbh7G98p/1r48DpEtnJ7jbAbK1hi9QDL+MDDl7++k7OP\nwBYmh0cUZym95aKSsYrQsvmyJKaLJeBpxb//8QIDAQABo4IBlzCCAZMwCQYDVR0T\nBAIwADARBglghkgBhvhCAQEEBAMCBkAwMwYJYIZIAYb4QgENBCYWJE9wZW5TU0wg\nR2VuZXJhdGVkIFNlcnZlciBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUEhdL5bqn8/mw\npt45VuoDF7syiykwgbAGA1UdIwSBqDCBpYAUALXKeW2eAMcZdfYUVaK6N9yxZYWh\ngYikgYUwgYIxCzAJBgNVBAYTAlVBMRMwEQYDVQQIDApLaGFya2l2c2thMQswCQYD\nVQQHDAJLSDEMMAoGA1UECgwDTklYMQswCQYDVQQLDAJRQTE2MDQGCSqGSIb3DQEJ\nARYnG1tBG1tBG1tBG1tBG1tCG1tCG1tCG1tCG1tCG1tCG1tCG1tCG1tCggIQADAO\nBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwRwYDVR0RBEAwPoIO\nKi5td3RyaWFsLmluZm+CDSoubXd0cmlhbC5jb22CDioubXd0cmlhbC5zaXRlgg0q\nLm13dHJpYWwueHl6MA0GCSqGSIb3DQEBCwUAA4ICAQBupNRY9bq9KCs0AWVVkGi2\njjnRxsx+ZGxW0xvNbF0P9HEjrrUY+kAkaIHXWdBeEtPniQAdYBaSOn8w/7qeWa4x\nnPUjOV6cE7ALP02+KELxvq8LoTOLgYGzftxbbGlyqJtgmXcrRQ8mxwCpX8E4b+DU\nFqp97revzew+/7qeZxdW59TOvk6JH4cP8yV316epXGO83Qt+annwy9P/gAIxWrSV\nvokuGOqpQ0ZtRfuWWv3qByCqE2G1X49W9MAJ0Bv3KvOegCCaW1vunACLIF/He8FU\nS9vDT0LjeJpAOVngid3a7y5qf3dmCUhcONpC7ppVxOkh/Z8zr5q85EPd07CYYJ/k\nZPnD6lI74v6rpVyvsLEQ3dcYJjDxOphcT8xw8g5WXHiMOOe4Q5H/MiaLI+4QHYc1\nBgG0JOZaEv9kMUmFAKJmjhtitIJgMZ3EX1vgox2rFsdFMcJj/hAmiSOEV9WXFD1h\nsHFxoi0qAmQolfI1BgPijgDky8vk/NkOaUNpIvjPYvGmIyf4nl5R2Y0EHwkPaRoP\nPmfcTu+kpS5dd5JSW9Q32/YBt9nJD+TcKrobEG0qYFj1k1g2pBW1PHFZd/32LnXB\nDE2MjcXu15AoJ69nerZnDXjldyUuXXTHDn8x+mFwL3uVL0v9f5VRy60RmX3hp9Pz\n\n\n9sLr4aKN46Km179VwW1LaQ==\n\n\n-----END CERTIFICATE-----\", \
                    \"chainCert\":\"-----BEGIN CERTIFICATE-----\n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\n72d+CtWJGpH5ZBIrneDl\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n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\n\n\n-----END CERTIFICATE-----\n\"
                } \
            }' \
            "
echo $api_call
eval $api_call

复现步骤 / Steps to reproduce

  • 按照程序的正常逻辑执行即可

日志 / Logs

开始
[2025-04-15 15:07:26]  ready to start ...

申请证书
[2025-04-15 15:07:26]  ready to apply ...
[2025-04-15 15:07:26]  skip this application, because the certificate has already been issued (expires in 70d, next renewal in 30d)

若前序节点执行成功…
[2025-04-15 15:07:26]  the previous node execution was succeeded

部署证书
[2025-04-15 15:07:26]  ready to deploy ...
[2025-04-15 15:07:26]  skip this deployment, because the certificate has already been deployed

若前序节点执行成功…
[2025-04-15 15:07:26]  the previous node execution was succeeded

部署证书
[2025-04-15 15:07:26]  ready to deploy ...
[2025-04-15 15:07:26]  skip this deployment, because the certificate has already been deployed

若前序节点执行成功…
[2025-04-15 15:07:26]  the previous node execution was succeeded

部署证书
[2025-04-15 15:07:26]  ready to deploy ...
[2025-04-15 15:07:26]
sdk request 'cdn.GetHostnameDetail'
hostname:
"google.com"
response:
{"hostname":"google.com","propertyInProduction":{"propertyId":"bf0ee1af092bf98f3e","version":2,"certificateId":"f6b1658aa2e3"}}
[2025-04-15 15:07:27]
sdk request 'cdn.CreateCertificate'
certificateId:
"f6b1658aa2e3"
request:
{"name":"certimate_1744700846958","autoRenew":"Off","newVersion":{"privateKey":"LgrXXsoE1+G6+mt/u0cCaDRDjf9Y5+P/AK1+P6pA6W6ZzlF8Y9z2d5poVtqv7F0UqIetdbzZXjR7TL0uXiU6a5QB4jMfnkm5F1wPOe4AMUxYnGTLowJv8FE5BT7cLR8nWoBudZsvHg1WNLVpYhNk2wiCty4mTWQSKN+lwnkI7bq7KCUe6n/CTzm24F8x8OyI6I9O","certificate":"-----BEGIN CERTIFICATE-----\nMIIEZTCCA02gAwIBAgIRAOk913VFyO1vDZhF23wB+ywwDQYJKoZIhvcNAQELBQAw\nOzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFUdvb2dsZSBUcnVzdCBTZXJ2aWNlczEM\nMAoGA1UEAxMDV1IxMB4XDTI1MDMyNzAyMDQzNVoXDTI1MDYyNTAyMDQzNFowHTEb\nMBkGA1UEAxMSeXVuZHVveW91eGlhbmcuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D\nAQcDQgAErVEwbOmJifMzDtygg/PvJzipDsPJ5qv83tWdo/2cMPUa0kzI52iSihHZ\nM2hA5y7OCEKV6gLF7itUA4/S8HCgBaOCAkswggJHMA4GA1UdDwEB/wQEAwIHgDAT\nBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+ZtLT\nNX5DnVm0xDfEtoyQAxq61jAfBgNVHSMEGDAWgBRmaUnU3iqckQPPiQ4kuA4wA26I\nLjBeBggrBgEFBQcBAQRSMFAwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vLnBraS5nb29n\nL3Mvd3IxLzZUMDAlBggrBgEFBQcwAoYZaHR0cDovL2kucGtpLmdvb2cvd3IxLmNy\ndDAdBgNVHREEFjAUghJ5dW5kdW95b3V4aWFuZy5jb20wEwYDVR0gBAwwCjAIBgZn\ngQwBAgEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2MucGtpLmdvb2cvd3IxL1Ux\nRm5CeHNWUHA0LmNybDCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB1AE51oydcmhDD\nOFts1N8/Uusd8OCODAEYwRAIgBzl1icCo\nicLR03fUk5QIy2STR/S4p+SV6\nB2hW9waB23WFECw1AHcAzPsPaohVwNl422qX5UwP5MDbAA\nAAGV1Y8JPAAABAMASDBGAiEAm6vR+YHYNTgImzQIm+TaMd+o8YDISbSyQkSagjTX\n9vsCIQCcwbXthuatYBMl9EIEtr6CRHpW7bwjVJ+y3WrdwaYl3DANBgkqhkiG9w0B\nAQsFAAOCAQEAUVWF5qzbbM8ukDpMX//95WP0L9NlWazENS+k3jP0yMSG5mszXS/Y\nO5ojDR9GHy5DVthOr7+Uh3ZdIgpBQUr0Ere1z7Fs2GtCVPGnLawfLIxwYN1RR8ri\nzR/nvMmbnNYpiu39s7dc+tW47jjMQu\n/uETPYz8sayYX+kKB9/j0XYRDcx9tZxG0Ve+OBtHmEg3eHob+Vnzpht/XzSJyPK4\nrDPnI2mWViUBGzwrDYfim8v7P7yOlE4YlTB6OzjWyHtz1UulA7HR+HShmLdBv6/4\nEvKnSkvjpDlGcZEFlkMorEYnufdPcDSV8A==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFCzCCAvOgAwIBAgIQf9niwtIEigR0tieibQhopzANBgkqhkiG9w0BAQsFADBH\nMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM\nQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMjIw\nMTQwMDAwWjA7MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVR29vZ2xlIFRydXN0IFNl\ncnZpY2VzMQwwCgYDVQQDEwNXUjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQDPbjYWircr7kaYAx1TcA937qNLoHK+jyMtwkfGj1yN+T3mGo7uMyINyRFI\nuLBizvRpDXICfd7VJg/DbpvPfg7XIM/GkDujggbaOp3/bFa/3OlhlEXkabxPD8kT\nwK1hRHIggdAPK55oamJqj4oiV3lpK+IkM352YyxdvFFpfiMHsf92gfHuuFi1azUV\n76HmSCg5lzHZBx+Vp56uz5i8no2KA+Gwl01Qb5NMSh/4233xkJkVf+OW7e4xgepy\nPVId3yVkpQtwqp7oqLlHyKdaECVgb0Lh1z/njwzwwoNGMyDmS3cEdqFop10VGO/Y\nKHc1rQ6tRuRibuKq+MzvN34PJrMHAgMBAAGjgf4wgfswDgYDVR0PAQH/BAQDAgGG\nMB0GA1UdJQQWMBBAf8ECDAGAQH/\nAgEAMB0GA1UdDgQWBBRmaUnU3iqckQPPiQ4kuA4wA26ILjAfBgNVHSMEGDAWgBTk\nrysmcRorSCeFL1JmLO/wiRNxPjA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKG\nGGhb29nL3IxLmNydDArBgNVHR8EJDAiMCCgHqAchhpodHRw\nOi8vYy5wa2kuZ29vZy9yL3IxLmNybDATBgNVHSAEDDAKMAgGBmeBDAECATANBgkq\nhkiG9w0BAQsFAAOCAgEATuazCBEgkWAn+VGQidUihJfm1t/mTjo7KQR+\n3iDx4o2L06oeF0Q3wpKYpQgI/TeMqUlYMWQmZbWPE0PX8pfsVAE5E5tVOjh34bNA\nJwDPVnsZVJwzN3nw5BGQ7sxRspFzIcM/qbbTpNeXf9II4Wsk2+Tv6FSVFZUL3/0u\nHradbruDWjRQ4Iqk08dpOZ+TmBzwykEGy1/IXberb6Ap1SSnn2+RI7t6\nN/fqPCrwwFjp8kg1G6etRATGBaPYCx+GjJMFPX+k97Alvoj3/98SvqdegLPYEPjv\nxUclHpiKLD63NMmVarRnR+mndGHIQc77TLbcZFeja56Pyn\nlSqmer578c7CBrPqo1BVmPyWUK+v6sGuzs7Mq7QQaxVs4710cI/MpPp1ovxMVt17\nENKxLk34LpEKAKVmqwnzbHHRjhXNeCC984XDOwLEp0K4MzHl8ZOWJQAakCdVlFC+\nPyA3GP2JX/QLoqWNHbDhHVs/L+65De+OdnnjpFGI9xxtsNyRsyaHdFA\nf5z7ulOoXDXkHCCej/Ehs5docReNt16W2xbH/EBuirJrOzFE2rtALxksl1TdEjOf\nIKXOJfUqQeVI5+hA7V+n1+A/n7Npg0S+5ODytWh5XW54ccN1drJnMK54ttozh0c=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFYjCCBEqgAwIBAgIQd70NbNs2+RrqIQ/E8FjTDTANBgkqhkiG9w0BAQsFADBX\nMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEQMA4GA1UE\nCxMHUm9vdCBDQTEbMBkGA1UEAxMSR2xvYmFsU2lnbiBSb290IENBMB4XDTIwMDYx\nOTAwMDA0MloXDTI4MDEyODAwMDA0MlowRzELMAkGA1UEBhMCVVMxIjAgBgNVBAoT\nGUdvb2dsZSBUcnVzdCBTZXJ2aWNlcyBMTEMxFDASBgNVBAMTC0dUUyBSb290IFIx\nMIICIjANBgkqhkiXebO9y/lD63\nladAPKH9gvl9MgaCcfb2jH/76Nu8ai6Xl6OMS/kr9rH5zoQdsfnFl97vufKj6bwS\niV6nqlKr+CMny6SxnGPb15l+8Ape62im9MZaRw1NEDPjTrETo8gYbEvs/AmQ351k\nKSUjB6G00j0uYODq+PsAewnjHxgsHA3y6mbWwZ\nDrXYfiYaRQM9sHmklCitD38m5agI/pboPGiUU+6DOogrFZYJsuB6jC511pzrp1Zk\nj5ZPaK49l8KEj8C8QMALXL32h7M1bKwYUH+E4EzNktMg6TO8UpmvMrUpsyUqtEj5\ncuHKZPfmghCN6J3Cioj6OGaK/GP5Afl4/Xtcd/p2h/rs37EOeZVXtL0m79YB0esW\nCruOC7XFxYpVq9Os6pFLKcwZpDIlTirxZUTQAs6qzkm06p98g7BAe+dDq6dso499\niYH6TKX/1Y7DzkvgtdizjkXPdsDtQCv9Uw+wp9U7DbGKogPeMa3Md+pvez7W35Ei\nEua++tgy/BBjFFFy35qoIbap\nsZWwpbkNFhHax2xIPEDgfg1azVY80ZcFuctL7TlLnMQ/0lUTbiSw1nH69MG6zO0b\n9f6BQdgAmD06yK56mDcYBZUCAwEAAaOCATgwggE0MA4GA1UdDwEB/wQEAwIBhjAP\nBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQL1JmLO/wiRNxPjAf\nBgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9SzBgBggrBgEFBQcBAQRUMFIw\nJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnBraS5nb29nL2dzcjEwKQYIKwYBBQUH\nMAKGHWh0dHwJ6Al\noCOGIWh0dHA6Ly9jcmwucGtpLmdvb2cvZ3NyMS9nc3IxLmNybDA7BgNVHSAENDAy\nMAgGBmeBDAECATAIBgZngQwBAgIwDQYLKwYBBAHWeQIFAwIwDQYLKwYBBAHWeQIF\nAwMwDQYJKoZIhvZBiLg9\nNR3t5P+T4Vxfq7vqfM/b5A3Ri1fyJm9bvhdGaJQ3b2t6yMAYN/olUazsaL+yyEn9\nWprKASOshIArAoyZl+tJaox118fessmXn1hIVw41oeQa1v1vg4Fv74zPl6/AhSrw\n9U5pCZEt4Wi4wStz6dTZ/CLANx8LZh1J7QJVj2fhMtfTJr9w4z30Z209fOU0iOMy\n+qduBmpvvYuR7hZL6Dupszfng3BZlvi\nd0lIKO2d1xozclOzgjXPYovJJIultzkMu34qQb9Sz/yilrbCgj8=\n-----END CERTIFICATE-----","identificationInfo":{"commonName":"google.com","subjectAlternativeNames":["google.com"]}}}
response:
{"code":"InvalidKey","message":"Invalid private key cipher. The private key must be encrypted with your API key and the timestamp. Check if the API key is correct and if the private key is properly encrypted."}
[2025-04-15 15:07:27]
failed to deploy
[2025-04-15 15:07:27]
failed to execute sdk request 'cdn.UpdateCertificate': wangsu api error: unexpected status code: 400, resp: {"code":"InvalidKey","message":"Invalid private key cipher. The private key must be encrypted with your API key and the timestamp. Check if the API key is correct and if the private key is properly encrypted."}

若前序节点执行失败…
[2025-04-15 15:07:27]  the previous node execution was failed

推送通知
[2025-04-15 15:07:27]  ready to notify ...
[2025-04-15 15:07:27]  notify completed

其他 / Miscellaneous

No response

Originally created by @Anbool on GitHub (Apr 15, 2025). Original GitHub issue: https://github.com/certimate-go/certimate/issues/617 ### 软件版本 / Release Version v0.3.8 ### 缺陷描述 / Description 我错了大哥,上次忘记回复你了。网宿给的 Shell 脚本示例我已经测试成功了: 其中的 **时间戳** 就是取值当前时间 ```shell #!/bin/bash username="example_username" apiKey="example_apiKey" date=`env LANG="en_US.UTF-8" date -u "+%a, %d %b %Y %H:%M:%S GMT"` password=`echo -en "$date" | openssl dgst -sha1 -hmac $apiKey -binary | openssl enc -base64` # Generates IV and Key for private key encryption aesivkey=$(echo -n "$date" | openssl dgst -sha256 -hmac "$apiKey" -r) aes128cbciv=${aesivkey:0:32} aes128cbckey=${aesivkey:32:32} # Encrypts the private key private_key='-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKEFGEArs8rr7mm95QdJiRkK4gNlHsovMEPToCdwh48r3Go9GssL/gD\nrPhHZvAII40rlOrxzgOJalfv47xic+vV5ifbBk9OMA+qwLlj/NnPG+33hCC2ALNg\nT1X/daj6KoHeCVyOS+0WZx+qfw/XU7keowWksTlvpfTdEXGTN6hja6kBjBOILmOv\nOpyKbU40yDf09a8xqaVhGnnRV+NZmmViL0p+s5n80h01tzFN6/bpYs8IA4TqIEDA\naEmNQmESVKQS/80grZ67Cbh7G98p/1r48DpEtnJ7jbAbK1hi9QDL+MDDl7++k7OP\nwBYmh0cUZym95aKSsYrQsvmyJKaLJeBpxb//8QIDAQABAoIBAAwVQd3JpWLjmAg0\n57+ijd2/jZdOePJiLYVndaZi4tzSM6G1MPvZxYW1/boHXgXTH5ev4uW44loJgXyl\nxok8JAWRocPssU7VAbZOj+RMVJmLcUknHPce6KOHZJNfmqtm/Gb/IldKdwyFWcrt\nttJp53Jgl/kOreEwyo5EU2rzqam26pr686gNVs3s35OPK1iWprd8KRTvCnj2JY2v\nss7OtJvny1WmaozMvBixBR9cqF8nu3XRlAR6vhIjjbgeNK4iWgBZRkXCp9+jJIhr\nZ0L6OyGUEhGZEd3J+jXic3DauyeNIfy4autHHsGWN33le+rmqAyRA7iLJKzuk1Ks\nwnH8MIECgYEA4XK2A7ZtI7Z5evQVlNuRbQBcYPeWVjbmAFVgXmS8cG0hjasjpRSO\nCPvyJ9Qhi14EYQKapr02vbYADPIk0s1xpT3CQWyzI11TzG/gxeLDGW2ceziWK+3I\nBAJ9F/B6F6Xmwkoe1dGTIf80+81atloV2UlE7+w2YovzxSzmqx4x+HkCgYEAxn+w\nAexWWKCySBoN3elnKQTl9ZAtF+S2dBDYOrFD1O/77KP+aemLXtpBPA3XqPZr7i9V\nv8+JkXK+Yxm2s1lny044jgMkcfMLEsNb7UuLZPALQXQBcEQD4blmWuU6k9rGP+Jd\n7g2XXDLLnvr0Vob/DRbV2s+knMmuH/t1Gp071TkCgYB49u+qdkuBCfuMeULLKDST\nY8otTSsg/zvRmf2nKC3jtOp39QefH7RGJcj8jdmhycRXuOn55TRl/i1wxMv1P75m\nhwifyg8kPoMkAjN8eftsvV9kzivlTiQv4pX0LleUMLPsM5Dv8Q8dAq4PHVQ624M1\nnxaaFQfpQGZ/uWPbFMyDIQKBgQCKlT0RqqoCCHdP5XjG9JxERBo0nmsNIm3LjLMa\nDwaXlNDivv/xe88E8wXWYqetXBWwXjXUy5V1CZIoaBxpDMNtangLleAM+i1B9Uip\n3DM+zmRdVxtmAOZg4mq2jRGfhn8gvO7tM2n4QbJtlTGfc3J/9fBqasu3dwrtY0a3\nxQyv6QKBgHKkrDB9MqY9NZwNsXrzVcqlPINlNnNNvxvIwS146lyX56AYbAubp3oR\ngsedNcoLw72jxAswBTKpjEPOAtPt2W/oGu1l9uLuaVhCMuxlAPsUpi4jGFhY9YJB\n\n\niSmpo0joR/GljOCWPnLzLOlpwHWT/RoqXlK3c+H8YrzsjJvZI7hs\n\n\n-----END RSA PRIVATE KEY-----' encrypted_private_key=`echo -e $private_key | openssl aes-128-cbc -base64 -nosalt -K $aes128cbckey -iv $aes128cbciv` # Create certificate api_call="curl -i --url 'https://open.chinanetcenter.com/cdn/certificates' -X POST \ -u $username:$password \ -H 'Date: $date' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json'\ -d '{ \"name\":\"test_cert_creation\", \ \"description\":\"test test\", \ \"newVersion\": { \ \"comments\":\"some comments\", \ \"privateKey\":\"$encrypted_private_key\", \ \"certificate\":\"-----BEGIN CERTIFICATE-----\nMIIGDDCCA/SgAwIBAgICEAIwFEGJKoZIhvcNAQELBQAwdjELMAkGA1UEBhMCVUEx\nEzARBgNVBAgMCktoYXJraXZza2ExDDAKBgNVBAoMA05JWDELMAkGA1UECwwCUUEx\nFzAVBgNVBAMMDioubXd0cmlhbC5pbmZvMR4wHAYJKoZIhvcNAQkBFg90ZXN0bml4\nQGdnZy5jb20wHhcNMjEwNDEzMTc0MDU2WhcNMjYwNjAxMTc0MDU2WjCBgDELMAkG\nA1UEBhMCVUExEDAOBgNVBAgMB0tIQVJLSVYxCzAJBgNVBAcMAktIMQwwCgYDVQQK\nDANOSVgxCzAJBgNVBAsMAlFBMRcwFQYDVQQDDA4qLm13dHJpYWwuaW5mbzEeMBwG\nCSqGSIb3DQEJARYPbml4dGVzdEBuaXguY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEArs8rr7mm95QdJiRkK4gNlHsovMEPToCdwh48r3Go9GssL/gD\nrPhHZvAII40rlOrxzgOJalfv47xic+vV5ifbBk9OMA+qwLlj/NnPG+33hCC2ALNg\nT1X/daj6KoHeCVyOS+0WZx+qfw/XU7keowWksTlvpfTdEXGTN6hja6kBjBOILmOv\nOpyKbU40yDf09a8xqaVhGnnRV+NZmmViL0p+s5n80h01tzFN6/bpYs8IA4TqIEDA\naEmNQmESVKQS/80grZ67Cbh7G98p/1r48DpEtnJ7jbAbK1hi9QDL+MDDl7++k7OP\nwBYmh0cUZym95aKSsYrQsvmyJKaLJeBpxb//8QIDAQABo4IBlzCCAZMwCQYDVR0T\nBAIwADARBglghkgBhvhCAQEEBAMCBkAwMwYJYIZIAYb4QgENBCYWJE9wZW5TU0wg\nR2VuZXJhdGVkIFNlcnZlciBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUEhdL5bqn8/mw\npt45VuoDF7syiykwgbAGA1UdIwSBqDCBpYAUALXKeW2eAMcZdfYUVaK6N9yxZYWh\ngYikgYUwgYIxCzAJBgNVBAYTAlVBMRMwEQYDVQQIDApLaGFya2l2c2thMQswCQYD\nVQQHDAJLSDEMMAoGA1UECgwDTklYMQswCQYDVQQLDAJRQTE2MDQGCSqGSIb3DQEJ\nARYnG1tBG1tBG1tBG1tBG1tCG1tCG1tCG1tCG1tCG1tCG1tCG1tCG1tCggIQADAO\nBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwRwYDVR0RBEAwPoIO\nKi5td3RyaWFsLmluZm+CDSoubXd0cmlhbC5jb22CDioubXd0cmlhbC5zaXRlgg0q\nLm13dHJpYWwueHl6MA0GCSqGSIb3DQEBCwUAA4ICAQBupNRY9bq9KCs0AWVVkGi2\njjnRxsx+ZGxW0xvNbF0P9HEjrrUY+kAkaIHXWdBeEtPniQAdYBaSOn8w/7qeWa4x\nnPUjOV6cE7ALP02+KELxvq8LoTOLgYGzftxbbGlyqJtgmXcrRQ8mxwCpX8E4b+DU\nFqp97revzew+/7qeZxdW59TOvk6JH4cP8yV316epXGO83Qt+annwy9P/gAIxWrSV\nvokuGOqpQ0ZtRfuWWv3qByCqE2G1X49W9MAJ0Bv3KvOegCCaW1vunACLIF/He8FU\nS9vDT0LjeJpAOVngid3a7y5qf3dmCUhcONpC7ppVxOkh/Z8zr5q85EPd07CYYJ/k\nZPnD6lI74v6rpVyvsLEQ3dcYJjDxOphcT8xw8g5WXHiMOOe4Q5H/MiaLI+4QHYc1\nBgG0JOZaEv9kMUmFAKJmjhtitIJgMZ3EX1vgox2rFsdFMcJj/hAmiSOEV9WXFD1h\nsHFxoi0qAmQolfI1BgPijgDky8vk/NkOaUNpIvjPYvGmIyf4nl5R2Y0EHwkPaRoP\nPmfcTu+kpS5dd5JSW9Q32/YBt9nJD+TcKrobEG0qYFj1k1g2pBW1PHFZd/32LnXB\nDE2MjcXu15AoJ69nerZnDXjldyUuXXTHDn8x+mFwL3uVL0v9f5VRy60RmX3hp9Pz\n\n\n9sLr4aKN46Km179VwW1LaQ==\n\n\n-----END CERTIFICATE-----\", \ \"chainCert\":\"-----BEGIN CERTIFICATE-----\n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\n72d+CtWJGpH5ZBIrneDl\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n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\n\n\n-----END CERTIFICATE-----\n\" } \ }' \ " echo $api_call eval $api_call ``` ### 复现步骤 / Steps to reproduce - 按照程序的正常逻辑执行即可 ### 日志 / Logs ```console 开始 [2025-04-15 15:07:26] ready to start ... 申请证书 [2025-04-15 15:07:26] ready to apply ... [2025-04-15 15:07:26] skip this application, because the certificate has already been issued (expires in 70d, next renewal in 30d) 若前序节点执行成功… [2025-04-15 15:07:26] the previous node execution was succeeded 部署证书 [2025-04-15 15:07:26] ready to deploy ... [2025-04-15 15:07:26] skip this deployment, because the certificate has already been deployed 若前序节点执行成功… [2025-04-15 15:07:26] the previous node execution was succeeded 部署证书 [2025-04-15 15:07:26] ready to deploy ... [2025-04-15 15:07:26] skip this deployment, because the certificate has already been deployed 若前序节点执行成功… [2025-04-15 15:07:26] the previous node execution was succeeded 部署证书 [2025-04-15 15:07:26] ready to deploy ... [2025-04-15 15:07:26] sdk request 'cdn.GetHostnameDetail' hostname: "google.com" response: {"hostname":"google.com","propertyInProduction":{"propertyId":"bf0ee1af092bf98f3e","version":2,"certificateId":"f6b1658aa2e3"}} [2025-04-15 15:07:27] sdk request 'cdn.CreateCertificate' certificateId: "f6b1658aa2e3" request: {"name":"certimate_1744700846958","autoRenew":"Off","newVersion":{"privateKey":"LgrXXsoE1+G6+mt/u0cCaDRDjf9Y5+P/AK1+P6pA6W6ZzlF8Y9z2d5poVtqv7F0UqIetdbzZXjR7TL0uXiU6a5QB4jMfnkm5F1wPOe4AMUxYnGTLowJv8FE5BT7cLR8nWoBudZsvHg1WNLVpYhNk2wiCty4mTWQSKN+lwnkI7bq7KCUe6n/CTzm24F8x8OyI6I9O","certificate":"-----BEGIN CERTIFICATE-----\nMIIEZTCCA02gAwIBAgIRAOk913VFyO1vDZhF23wB+ywwDQYJKoZIhvcNAQELBQAw\nOzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFUdvb2dsZSBUcnVzdCBTZXJ2aWNlczEM\nMAoGA1UEAxMDV1IxMB4XDTI1MDMyNzAyMDQzNVoXDTI1MDYyNTAyMDQzNFowHTEb\nMBkGA1UEAxMSeXVuZHVveW91eGlhbmcuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D\nAQcDQgAErVEwbOmJifMzDtygg/PvJzipDsPJ5qv83tWdo/2cMPUa0kzI52iSihHZ\nM2hA5y7OCEKV6gLF7itUA4/S8HCgBaOCAkswggJHMA4GA1UdDwEB/wQEAwIHgDAT\nBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+ZtLT\nNX5DnVm0xDfEtoyQAxq61jAfBgNVHSMEGDAWgBRmaUnU3iqckQPPiQ4kuA4wA26I\nLjBeBggrBgEFBQcBAQRSMFAwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vLnBraS5nb29n\nL3Mvd3IxLzZUMDAlBggrBgEFBQcwAoYZaHR0cDovL2kucGtpLmdvb2cvd3IxLmNy\ndDAdBgNVHREEFjAUghJ5dW5kdW95b3V4aWFuZy5jb20wEwYDVR0gBAwwCjAIBgZn\ngQwBAgEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2MucGtpLmdvb2cvd3IxL1Ux\nRm5CeHNWUHA0LmNybDCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB1AE51oydcmhDD\nOFts1N8/Uusd8OCODAEYwRAIgBzl1icCo\nicLR03fUk5QIy2STR/S4p+SV6\nB2hW9waB23WFECw1AHcAzPsPaohVwNl422qX5UwP5MDbAA\nAAGV1Y8JPAAABAMASDBGAiEAm6vR+YHYNTgImzQIm+TaMd+o8YDISbSyQkSagjTX\n9vsCIQCcwbXthuatYBMl9EIEtr6CRHpW7bwjVJ+y3WrdwaYl3DANBgkqhkiG9w0B\nAQsFAAOCAQEAUVWF5qzbbM8ukDpMX//95WP0L9NlWazENS+k3jP0yMSG5mszXS/Y\nO5ojDR9GHy5DVthOr7+Uh3ZdIgpBQUr0Ere1z7Fs2GtCVPGnLawfLIxwYN1RR8ri\nzR/nvMmbnNYpiu39s7dc+tW47jjMQu\n/uETPYz8sayYX+kKB9/j0XYRDcx9tZxG0Ve+OBtHmEg3eHob+Vnzpht/XzSJyPK4\nrDPnI2mWViUBGzwrDYfim8v7P7yOlE4YlTB6OzjWyHtz1UulA7HR+HShmLdBv6/4\nEvKnSkvjpDlGcZEFlkMorEYnufdPcDSV8A==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFCzCCAvOgAwIBAgIQf9niwtIEigR0tieibQhopzANBgkqhkiG9w0BAQsFADBH\nMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM\nQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMjIw\nMTQwMDAwWjA7MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVR29vZ2xlIFRydXN0IFNl\ncnZpY2VzMQwwCgYDVQQDEwNXUjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQDPbjYWircr7kaYAx1TcA937qNLoHK+jyMtwkfGj1yN+T3mGo7uMyINyRFI\nuLBizvRpDXICfd7VJg/DbpvPfg7XIM/GkDujggbaOp3/bFa/3OlhlEXkabxPD8kT\nwK1hRHIggdAPK55oamJqj4oiV3lpK+IkM352YyxdvFFpfiMHsf92gfHuuFi1azUV\n76HmSCg5lzHZBx+Vp56uz5i8no2KA+Gwl01Qb5NMSh/4233xkJkVf+OW7e4xgepy\nPVId3yVkpQtwqp7oqLlHyKdaECVgb0Lh1z/njwzwwoNGMyDmS3cEdqFop10VGO/Y\nKHc1rQ6tRuRibuKq+MzvN34PJrMHAgMBAAGjgf4wgfswDgYDVR0PAQH/BAQDAgGG\nMB0GA1UdJQQWMBBAf8ECDAGAQH/\nAgEAMB0GA1UdDgQWBBRmaUnU3iqckQPPiQ4kuA4wA26ILjAfBgNVHSMEGDAWgBTk\nrysmcRorSCeFL1JmLO/wiRNxPjA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKG\nGGhb29nL3IxLmNydDArBgNVHR8EJDAiMCCgHqAchhpodHRw\nOi8vYy5wa2kuZ29vZy9yL3IxLmNybDATBgNVHSAEDDAKMAgGBmeBDAECATANBgkq\nhkiG9w0BAQsFAAOCAgEATuazCBEgkWAn+VGQidUihJfm1t/mTjo7KQR+\n3iDx4o2L06oeF0Q3wpKYpQgI/TeMqUlYMWQmZbWPE0PX8pfsVAE5E5tVOjh34bNA\nJwDPVnsZVJwzN3nw5BGQ7sxRspFzIcM/qbbTpNeXf9II4Wsk2+Tv6FSVFZUL3/0u\nHradbruDWjRQ4Iqk08dpOZ+TmBzwykEGy1/IXberb6Ap1SSnn2+RI7t6\nN/fqPCrwwFjp8kg1G6etRATGBaPYCx+GjJMFPX+k97Alvoj3/98SvqdegLPYEPjv\nxUclHpiKLD63NMmVarRnR+mndGHIQc77TLbcZFeja56Pyn\nlSqmer578c7CBrPqo1BVmPyWUK+v6sGuzs7Mq7QQaxVs4710cI/MpPp1ovxMVt17\nENKxLk34LpEKAKVmqwnzbHHRjhXNeCC984XDOwLEp0K4MzHl8ZOWJQAakCdVlFC+\nPyA3GP2JX/QLoqWNHbDhHVs/L+65De+OdnnjpFGI9xxtsNyRsyaHdFA\nf5z7ulOoXDXkHCCej/Ehs5docReNt16W2xbH/EBuirJrOzFE2rtALxksl1TdEjOf\nIKXOJfUqQeVI5+hA7V+n1+A/n7Npg0S+5ODytWh5XW54ccN1drJnMK54ttozh0c=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFYjCCBEqgAwIBAgIQd70NbNs2+RrqIQ/E8FjTDTANBgkqhkiG9w0BAQsFADBX\nMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEQMA4GA1UE\nCxMHUm9vdCBDQTEbMBkGA1UEAxMSR2xvYmFsU2lnbiBSb290IENBMB4XDTIwMDYx\nOTAwMDA0MloXDTI4MDEyODAwMDA0MlowRzELMAkGA1UEBhMCVVMxIjAgBgNVBAoT\nGUdvb2dsZSBUcnVzdCBTZXJ2aWNlcyBMTEMxFDASBgNVBAMTC0dUUyBSb290IFIx\nMIICIjANBgkqhkiXebO9y/lD63\nladAPKH9gvl9MgaCcfb2jH/76Nu8ai6Xl6OMS/kr9rH5zoQdsfnFl97vufKj6bwS\niV6nqlKr+CMny6SxnGPb15l+8Ape62im9MZaRw1NEDPjTrETo8gYbEvs/AmQ351k\nKSUjB6G00j0uYODq+PsAewnjHxgsHA3y6mbWwZ\nDrXYfiYaRQM9sHmklCitD38m5agI/pboPGiUU+6DOogrFZYJsuB6jC511pzrp1Zk\nj5ZPaK49l8KEj8C8QMALXL32h7M1bKwYUH+E4EzNktMg6TO8UpmvMrUpsyUqtEj5\ncuHKZPfmghCN6J3Cioj6OGaK/GP5Afl4/Xtcd/p2h/rs37EOeZVXtL0m79YB0esW\nCruOC7XFxYpVq9Os6pFLKcwZpDIlTirxZUTQAs6qzkm06p98g7BAe+dDq6dso499\niYH6TKX/1Y7DzkvgtdizjkXPdsDtQCv9Uw+wp9U7DbGKogPeMa3Md+pvez7W35Ei\nEua++tgy/BBjFFFy35qoIbap\nsZWwpbkNFhHax2xIPEDgfg1azVY80ZcFuctL7TlLnMQ/0lUTbiSw1nH69MG6zO0b\n9f6BQdgAmD06yK56mDcYBZUCAwEAAaOCATgwggE0MA4GA1UdDwEB/wQEAwIBhjAP\nBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQL1JmLO/wiRNxPjAf\nBgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9SzBgBggrBgEFBQcBAQRUMFIw\nJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnBraS5nb29nL2dzcjEwKQYIKwYBBQUH\nMAKGHWh0dHwJ6Al\noCOGIWh0dHA6Ly9jcmwucGtpLmdvb2cvZ3NyMS9nc3IxLmNybDA7BgNVHSAENDAy\nMAgGBmeBDAECATAIBgZngQwBAgIwDQYLKwYBBAHWeQIFAwIwDQYLKwYBBAHWeQIF\nAwMwDQYJKoZIhvZBiLg9\nNR3t5P+T4Vxfq7vqfM/b5A3Ri1fyJm9bvhdGaJQ3b2t6yMAYN/olUazsaL+yyEn9\nWprKASOshIArAoyZl+tJaox118fessmXn1hIVw41oeQa1v1vg4Fv74zPl6/AhSrw\n9U5pCZEt4Wi4wStz6dTZ/CLANx8LZh1J7QJVj2fhMtfTJr9w4z30Z209fOU0iOMy\n+qduBmpvvYuR7hZL6Dupszfng3BZlvi\nd0lIKO2d1xozclOzgjXPYovJJIultzkMu34qQb9Sz/yilrbCgj8=\n-----END CERTIFICATE-----","identificationInfo":{"commonName":"google.com","subjectAlternativeNames":["google.com"]}}} response: {"code":"InvalidKey","message":"Invalid private key cipher. The private key must be encrypted with your API key and the timestamp. Check if the API key is correct and if the private key is properly encrypted."} [2025-04-15 15:07:27] failed to deploy [2025-04-15 15:07:27] failed to execute sdk request 'cdn.UpdateCertificate': wangsu api error: unexpected status code: 400, resp: {"code":"InvalidKey","message":"Invalid private key cipher. The private key must be encrypted with your API key and the timestamp. Check if the API key is correct and if the private key is properly encrypted."} 若前序节点执行失败… [2025-04-15 15:07:27] the previous node execution was failed 推送通知 [2025-04-15 15:07:27] ready to notify ... [2025-04-15 15:07:27] notify completed ``` ### 其他 / Miscellaneous _No response_
kerem 2026-03-03 01:03:06 +03:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@fudiwei commented on GitHub (Apr 15, 2025):

接口示例脚本里给的是 username+ApiKey,但是 SDK 示例给的是 AccessKey+SecretKey,这是俩完全不同的签名方案。所以我才问你这玩意儿到底该咋加密的。

<!-- gh-comment-id:2804156255 --> @fudiwei commented on GitHub (Apr 15, 2025): 接口示例脚本里给的是 username+ApiKey,但是 SDK 示例给的是 AccessKey+SecretKey,这是俩完全不同的签名方案。所以我才问你这玩意儿到底该咋加密的。
Author
Owner

@Anbool commented on GitHub (Apr 15, 2025):

接口示例脚本里给的是 username+ApiKey,但是 SDK 示例给的是 AccessKey+SecretKey,这是俩完全不同的签名方案。所以我才问你这玩意儿到底该咋加密的。

SDK 里我看给出了加密方式,这个是时间戳我确认了确实是当前时间,大哥别的还有啥问题不,有的话我问他们技术去。

<!-- gh-comment-id:2804189370 --> @Anbool commented on GitHub (Apr 15, 2025): > 接口示例脚本里给的是 username+ApiKey,但是 SDK 示例给的是 AccessKey+SecretKey,这是俩完全不同的签名方案。所以我才问你这玩意儿到底该咋加密的。 SDK 里我看给出了加密方式,这个是时间戳我确认了确实是当前时间,大哥别的还有啥问题不,有的话我问他们技术去。
Author
Owner

@fudiwei commented on GitHub (Apr 15, 2025):

Image

https://www.wangsu.com/document/api-doc/Overview

你贴的那段脚本,是基于第一种 API 鉴权方式。但是它提供的 SDK,是基于第二种鉴权方式,根本就没有 username 和 ApiKey。

所以你得问问,用 AKSK 这种鉴权方式的话,加密这里这些参数该怎么调整?

我现在是拿 SecretKey 当 APIKey 去生成那个 AES Key 和 iv(你开头贴的那段脚本第 7-10 行,就把传入的 apikey 改成 secretkey),但这么看不对。

<!-- gh-comment-id:2804242608 --> @fudiwei commented on GitHub (Apr 15, 2025): > ![Image](https://github.com/user-attachments/assets/9403435e-0a7c-4bfb-8212-e75c40e37afa) > > https://www.wangsu.com/document/api-doc/Overview 你贴的那段脚本,是基于第一种 API 鉴权方式。但是它提供的 SDK,是基于第二种鉴权方式,根本就没有 username 和 ApiKey。 所以你得问问,用 AKSK 这种鉴权方式的话,加密这里这些参数该怎么调整? 我现在是拿 SecretKey 当 APIKey 去生成那个 AES Key 和 iv(你开头贴的那段脚本第 7-10 行,就把传入的 apikey 改成 secretkey),但这么看不对。
Author
Owner

@Anbool commented on GitHub (Apr 15, 2025):

Image
https://www.wangsu.com/document/api-doc/Overview

你贴的那段脚本,是基于第一种 API 鉴权方式。但是它提供的 SDK,是基于第二种鉴权方式,根本就没有 username 和 ApiKey。

所以你得问问,用 AKSK 这种鉴权方式的话,加密这里这些参数该怎么调整?

我现在是拿 SecretKey 当 APIKey 去生成那个 AES Key 和 iv(你开头贴的那段脚本第 7-10 行,就把传入的 apikey 改成 secretkey),但这么看不对。

你看是这个不大哥。

Image

<!-- gh-comment-id:2804316447 --> @Anbool commented on GitHub (Apr 15, 2025): > > ![Image](https://github.com/user-attachments/assets/9403435e-0a7c-4bfb-8212-e75c40e37afa) > > https://www.wangsu.com/document/api-doc/Overview > > 你贴的那段脚本,是基于第一种 API 鉴权方式。但是它提供的 SDK,是基于第二种鉴权方式,根本就没有 username 和 ApiKey。 > > 所以你得问问,用 AKSK 这种鉴权方式的话,加密这里这些参数该怎么调整? > > 我现在是拿 SecretKey 当 APIKey 去生成那个 AES Key 和 iv(你开头贴的那段脚本第 7-10 行,就把传入的 apikey 改成 secretkey),但这么看不对。 你看是这个不大哥。 ![Image](https://github.com/user-attachments/assets/4dc6c607-26cb-4cf6-92e2-febff0061222)
Author
Owner

@fudiwei commented on GitHub (Apr 15, 2025):

我再详细说一遍吧,要是还没明白我也没办法了。

网宿云提供了两种 API 鉴权方案,第一种是 username+ApiKey 生成签名,第二种是 AccessKey+SecretKey 生成签名。

它接口文档里给的 curl 示例,是基于第一种实现的。AES 加密所用到的密钥,是用 ApiKey+当前时间生成出来的。

但它的 SDK,是基于第二种实现的。现在的问题就是,此时 AES 加密用到的秘钥该怎么生成?

API 鉴权是 API 鉴权,是所有接口都需要做的一步。AES 加密是 AES 加密,只有创建证书 privateKey 这一个字段需要加密。只是它 AES 加密所需的参数来自于 API 鉴权,可给的示例只有第一种没有第二种的。

<!-- gh-comment-id:2804346097 --> @fudiwei commented on GitHub (Apr 15, 2025): 我再详细说一遍吧,要是还没明白我也没办法了。 网宿云提供了两种 API 鉴权方案,第一种是 username+ApiKey 生成签名,第二种是 AccessKey+SecretKey 生成签名。 它接口文档里给的 curl 示例,是基于第一种实现的。AES 加密所用到的密钥,是用 ApiKey+当前时间生成出来的。 但它的 SDK,是基于第二种实现的。现在的问题就是,此时 AES 加密用到的秘钥该怎么生成? API 鉴权是 API 鉴权,是所有接口都需要做的一步。AES 加密是 AES 加密,只有创建证书 privateKey 这一个字段需要加密。只是它 AES 加密所需的参数来自于 API 鉴权,可给的示例只有第一种没有第二种的。
Author
Owner

@Anbool commented on GitHub (Apr 15, 2025):

确认是不能用 AK/SK 加密证书私钥。证书接口比较特殊,私钥加密只能用 ApiKey。仍可以用 AK/SK 做接口鉴权,但是私钥加密必须用 ApiKey。

这就意味着,必须单独的提供一个使用 Username+ApiKey 加密 privateKey 字段的方式🤣

ApiKey 在 https://console.wangsu.com/account/apiManage 进行创建。

<!-- gh-comment-id:2804411655 --> @Anbool commented on GitHub (Apr 15, 2025): 确认是不能用 AK/SK 加密证书私钥。证书接口比较特殊,私钥加密只能用 ApiKey。仍可以用 AK/SK 做接口鉴权,但是私钥加密必须用 ApiKey。 这就意味着,必须单独的提供一个使用 Username+ApiKey 加密 privateKey 字段的方式🤣 ApiKey 在 https://console.wangsu.com/account/apiManage 进行创建。
Author
Owner

@fudiwei commented on GitHub (Apr 17, 2025):

@Anbool 麻烦帮忙验证一下 #627 的 commit 50b48d956f

如果你没有 Node 环境的话直接跑 go 单测用例也行,位于 /internal/pkg/core/deployer/providers/wangsu-cdnpro 目录下。

<!-- gh-comment-id:2813091964 --> @fudiwei commented on GitHub (Apr 17, 2025): @Anbool 麻烦帮忙验证一下 #627 的 commit 50b48d956fde3b6d5c90107fa6ac4d9aa8c464be 如果你没有 Node 环境的话直接跑 go 单测用例也行,位于 /internal/pkg/core/deployer/providers/wangsu-cdnpro 目录下。
Author
Owner

@Anbool commented on GitHub (Apr 17, 2025):

@fudiwei 大哥,我看了一下代码,是不是少一个 username

<!-- gh-comment-id:2813274059 --> @Anbool commented on GitHub (Apr 17, 2025): @fudiwei 大哥,我看了一下代码,是不是少一个 username
Author
Owner

@fudiwei commented on GitHub (Apr 17, 2025):

@fudiwei 大哥,我看了一下代码,是不是少一个 username

Username 是用来生成请求签名的,现在签名是基于 AK/SK 生成的,也没法同时用两种签名呀。生成 AES 秘钥只需要 ApiKey 和时间戳。

<!-- gh-comment-id:2813321252 --> @fudiwei commented on GitHub (Apr 17, 2025): > [@fudiwei](https://github.com/fudiwei) 大哥,我看了一下代码,是不是少一个 username Username 是用来生成请求签名的,现在签名是基于 AK/SK 生成的,也没法同时用两种签名呀。生成 AES 秘钥只需要 ApiKey 和时间戳。
Author
Owner

@Anbool commented on GitHub (Apr 17, 2025):

@fudiwei 看上去失败了,好像没有打印具体的接口错误信息

go test -v ./wangsu_cdnpro_test.go -args --CERTIMATE_DEPLOYER_WANGSUCDNPRO_INPUTCERTPATH="/root/1.pem" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_INPUTKEYPATH="/root/2.pem" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ACCESSKEYID="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ACCESSKEYSECRET="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_APIKEY="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ENVIRONMENT="production" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_DOMAIN="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_CERTIFICATEID="脱敏"
=== RUN   TestDeploy
=== RUN   TestDeploy/Deploy
    wangsu_cdnpro_test.go:58: args:
        INPUTCERTPATH: /root/1.pem
        INPUTKEYPATH: /root/2.pem
        ACCESSKEYID: 脱敏
        ACCESSKEYSECRET: 脱敏
        APIKEY: 脱敏
        ENVIRONMENT: production
        DOMAIN: 脱敏
        CERTIFICATEID: 脱敏
        WEBHOOKID: 
    wangsu_cdnpro_test.go:89: err: wangsu api error: failed to parse response: unexpected end of JSON input
        failed to execute sdk request 'cdn.UpdateCertificate'
        github.com/usual2970/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro.(*DeployerProvider).Deploy
                /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go:154
        command-line-arguments_test.TestDeploy.func1
                /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro_test.go:87
        testing.tRunner
                /usr/local/go/src/testing/testing.go:1792
        runtime.goexit
                /usr/local/go/src/runtime/asm_amd64.s:1700
--- FAIL: TestDeploy (5.07s)
    --- FAIL: TestDeploy/Deploy (5.07s)
FAIL
FAIL    command-line-arguments  5.073s
FAIL
<!-- gh-comment-id:2813476115 --> @Anbool commented on GitHub (Apr 17, 2025): @fudiwei 看上去失败了,好像没有打印具体的接口错误信息 ```shell go test -v ./wangsu_cdnpro_test.go -args --CERTIMATE_DEPLOYER_WANGSUCDNPRO_INPUTCERTPATH="/root/1.pem" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_INPUTKEYPATH="/root/2.pem" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ACCESSKEYID="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ACCESSKEYSECRET="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_APIKEY="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ENVIRONMENT="production" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_DOMAIN="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_CERTIFICATEID="脱敏" === RUN TestDeploy === RUN TestDeploy/Deploy wangsu_cdnpro_test.go:58: args: INPUTCERTPATH: /root/1.pem INPUTKEYPATH: /root/2.pem ACCESSKEYID: 脱敏 ACCESSKEYSECRET: 脱敏 APIKEY: 脱敏 ENVIRONMENT: production DOMAIN: 脱敏 CERTIFICATEID: 脱敏 WEBHOOKID: wangsu_cdnpro_test.go:89: err: wangsu api error: failed to parse response: unexpected end of JSON input failed to execute sdk request 'cdn.UpdateCertificate' github.com/usual2970/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro.(*DeployerProvider).Deploy /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go:154 command-line-arguments_test.TestDeploy.func1 /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro_test.go:87 testing.tRunner /usr/local/go/src/testing/testing.go:1792 runtime.goexit /usr/local/go/src/runtime/asm_amd64.s:1700 --- FAIL: TestDeploy (5.07s) --- FAIL: TestDeploy/Deploy (5.07s) FAIL FAIL command-line-arguments 5.073s FAIL ```
Author
Owner

@Anbool commented on GitHub (Apr 17, 2025):

@fudiwei 抱歉,我又仔细的查看了一下控制台,证书的确已经可以上传了,把证书名称从我之前的域名命名改成了certimate_***,目前看已经成功更新了证书,因为我在 shell 看到的是报错,所以执行了四次,目前这个证书从原来的三个版本变成了七个版本,目前第七个版本还尚未部署,这样看来更新证书接口是没有问题的。但不知道为什么单例测试抛出了错误。

<!-- gh-comment-id:2813488676 --> @Anbool commented on GitHub (Apr 17, 2025): @fudiwei 抱歉,我又仔细的查看了一下控制台,证书的确已经可以上传了,把证书名称从我之前的域名命名改成了certimate_***,目前看已经成功更新了证书,因为我在 shell 看到的是报错,所以执行了四次,目前这个证书从原来的三个版本变成了七个版本,目前第七个版本还尚未部署,这样看来更新证书接口是没有问题的。但不知道为什么单例测试抛出了错误。
Author
Owner

@fudiwei commented on GitHub (Apr 17, 2025):

@fudiwei 看上去失败了,好像没有打印具体的接口错误信息

go test -v ./wangsu_cdnpro_test.go -args --CERTIMATE_DEPLOYER_WANGSUCDNPRO_INPUTCERTPATH="/root/1.pem" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_INPUTKEYPATH="/root/2.pem" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ACCESSKEYID="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ACCESSKEYSECRET="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_APIKEY="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ENVIRONMENT="production" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_DOMAIN="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_CERTIFICATEID="脱敏"
=== RUN TestDeploy
=== RUN TestDeploy/Deploy
wangsu_cdnpro_test.go:58: args:
INPUTCERTPATH: /root/1.pem
INPUTKEYPATH: /root/2.pem
ACCESSKEYID: 脱敏
ACCESSKEYSECRET: 脱敏
APIKEY: 脱敏
ENVIRONMENT: production
DOMAIN: 脱敏
CERTIFICATEID: 脱敏
WEBHOOKID:
wangsu_cdnpro_test.go:89: err: wangsu api error: failed to parse response: unexpected end of JSON input
failed to execute sdk request 'cdn.UpdateCertificate'
github.com/usual2970/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro.(*DeployerProvider).Deploy
/root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go:154
command-line-arguments_test.TestDeploy.func1
/root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro_test.go:87
testing.tRunner
/usr/local/go/src/testing/testing.go:1792
runtime.goexit
/usr/local/go/src/runtime/asm_amd64.s:1700
--- FAIL: TestDeploy (5.07s)
--- FAIL: TestDeploy/Deploy (5.07s)
FAIL
FAIL command-line-arguments 5.073s
FAIL

internal/pkg/vendors/wangsu-sdk/openapi/client.go 第 161 行:

- resp, err := req.Send()
+ resp, err := req.SetDebug(true).Send()

重新跑一下单测,会在控制台打印 HTTP 报文。看一下更新证书那个接口的响应是什么?

<!-- gh-comment-id:2813520874 --> @fudiwei commented on GitHub (Apr 17, 2025): > [@fudiwei](https://github.com/fudiwei) 看上去失败了,好像没有打印具体的接口错误信息 > > go test -v ./wangsu_cdnpro_test.go -args --CERTIMATE_DEPLOYER_WANGSUCDNPRO_INPUTCERTPATH="/root/1.pem" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_INPUTKEYPATH="/root/2.pem" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ACCESSKEYID="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ACCESSKEYSECRET="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_APIKEY="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_ENVIRONMENT="production" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_DOMAIN="脱敏" --CERTIMATE_DEPLOYER_WANGSUCDNPRO_CERTIFICATEID="脱敏" > === RUN TestDeploy > === RUN TestDeploy/Deploy > wangsu_cdnpro_test.go:58: args: > INPUTCERTPATH: /root/1.pem > INPUTKEYPATH: /root/2.pem > ACCESSKEYID: 脱敏 > ACCESSKEYSECRET: 脱敏 > APIKEY: 脱敏 > ENVIRONMENT: production > DOMAIN: 脱敏 > CERTIFICATEID: 脱敏 > WEBHOOKID: > wangsu_cdnpro_test.go:89: err: wangsu api error: failed to parse response: unexpected end of JSON input > failed to execute sdk request 'cdn.UpdateCertificate' > github.com/usual2970/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro.(*DeployerProvider).Deploy > /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go:154 > command-line-arguments_test.TestDeploy.func1 > /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro_test.go:87 > testing.tRunner > /usr/local/go/src/testing/testing.go:1792 > runtime.goexit > /usr/local/go/src/runtime/asm_amd64.s:1700 > --- FAIL: TestDeploy (5.07s) > --- FAIL: TestDeploy/Deploy (5.07s) > FAIL > FAIL command-line-arguments 5.073s > FAIL internal/pkg/vendors/wangsu-sdk/openapi/client.go 第 161 行: ```diff - resp, err := req.Send() + resp, err := req.SetDebug(true).Send() ``` 重新跑一下单测,会在控制台打印 HTTP 报文。看一下更新证书那个接口的响应是什么?
Author
Owner

@Anbool commented on GitHub (Apr 18, 2025):

@fudiwei 接口没有返回响应体,只有响应头。
请求:

GET  /cdn/hostnames/google.com

响应体:

{
   "hostname": "google.com",
   "propertyInProduction": {
      "propertyId": "37683af98f3e",
      "version": 2,
      "certificateId": "1c2a58aa2e3"
   },
   "propertyInStaging": null
}

请求:

PATCH  /cdn/certificates/1c2a58aa2e3

响应头:

STATUS       : 201 Created
PROTO        : HTTP/1.1
RECEIVED AT  : 2025-04-18T01:51:00.082893847Z
TIME DURATION: 2.226002464s
HEADERS      :
        App-Name: portal-ngcdn
        Connection: keep-alive
        Content-Length: 0
        Content-Type: application/json;charset=utf-8
        Date: Fri, 18 Apr 2025 01:51:00 GMT
        Location: https://open.chinanetcenter.com/cdn/certificates/1c2a58aa2e3/versions/8
        Server: openresty/1.11.2.2
        X-Cnc-Process-Time: 2.172
        X-Cnc-Request-Id: 1b10-a5c-4be
        X-Time-Zone: GMT+08:00
        X-Ws-Request-Id: 6801b006_PSxgHK5hq204_1699-333
BODY         :
***** NO CONTENT *****
<!-- gh-comment-id:2814341595 --> @Anbool commented on GitHub (Apr 18, 2025): @fudiwei 接口没有返回响应体,只有响应头。 请求: ```shell GET /cdn/hostnames/google.com ``` 响应体: ```shell { "hostname": "google.com", "propertyInProduction": { "propertyId": "37683af98f3e", "version": 2, "certificateId": "1c2a58aa2e3" }, "propertyInStaging": null } ``` 请求: ```shell PATCH /cdn/certificates/1c2a58aa2e3 ``` 响应头: ```shell STATUS : 201 Created PROTO : HTTP/1.1 RECEIVED AT : 2025-04-18T01:51:00.082893847Z TIME DURATION: 2.226002464s HEADERS : App-Name: portal-ngcdn Connection: keep-alive Content-Length: 0 Content-Type: application/json;charset=utf-8 Date: Fri, 18 Apr 2025 01:51:00 GMT Location: https://open.chinanetcenter.com/cdn/certificates/1c2a58aa2e3/versions/8 Server: openresty/1.11.2.2 X-Cnc-Process-Time: 2.172 X-Cnc-Request-Id: 1b10-a5c-4be X-Time-Zone: GMT+08:00 X-Ws-Request-Id: 6801b006_PSxgHK5hq204_1699-333 BODY : ***** NO CONTENT ***** ```
Author
Owner

@Anbool commented on GitHub (Apr 18, 2025):

应该是判断响应状态码是否为 201,然后取 Location 响应头中的 versions 执行部署就行了。

<!-- gh-comment-id:2814343835 --> @Anbool commented on GitHub (Apr 18, 2025): 应该是判断响应状态码是否为 **201**,然后取 **Location** 响应头中的 **versions** 执行部署就行了。
Author
Owner

@fudiwei commented on GitHub (Apr 18, 2025):

再验证一下 commit 437fea2c1c1fbedf7ce1dcc66bad9db2f329f887

<!-- gh-comment-id:2814550925 --> @fudiwei commented on GitHub (Apr 18, 2025): 再验证一下 commit 437fea2c1c1fbedf7ce1dcc66bad9db2f329f887
Author
Owner

@Anbool commented on GitHub (Apr 18, 2025):

再验证一下 commit 437fea2

好像同样的错误。

BODY         :
***** NO CONTENT *****
==============================================================================
    wangsu_cdnpro_test.go:89: err: wangsu api error: failed to parse response: unexpected end of JSON input
        failed to execute sdk request 'cdn.UpdateCertificate'
        github.com/usual2970/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro.(*DeployerProvider).Deploy
                /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go:154
        command-line-arguments_test.TestDeploy.func1
                /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro_test.go:87
        testing.tRunner
                /usr/local/go/src/testing/testing.go:1792
        runtime.goexit
                /usr/local/go/src/runtime/asm_amd64.s:1700
--- FAIL: TestDeploy (3.23s)
    --- FAIL: TestDeploy/Deploy (3.23s)
FAIL
FAIL    command-line-arguments  3.235s
FAIL
<!-- gh-comment-id:2814621886 --> @Anbool commented on GitHub (Apr 18, 2025): > 再验证一下 commit [437fea2](https://github.com/usual2970/certimate/commit/437fea2c1c1fbedf7ce1dcc66bad9db2f329f887) 好像同样的错误。 ```shell BODY : ***** NO CONTENT ***** ============================================================================== wangsu_cdnpro_test.go:89: err: wangsu api error: failed to parse response: unexpected end of JSON input failed to execute sdk request 'cdn.UpdateCertificate' github.com/usual2970/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro.(*DeployerProvider).Deploy /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go:154 command-line-arguments_test.TestDeploy.func1 /root/certimate/internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro_test.go:87 testing.tRunner /usr/local/go/src/testing/testing.go:1792 runtime.goexit /usr/local/go/src/runtime/asm_amd64.s:1700 --- FAIL: TestDeploy (3.23s) --- FAIL: TestDeploy/Deploy (3.23s) FAIL FAIL command-line-arguments 3.235s FAIL ```
Author
Owner

@fudiwei commented on GitHub (Apr 18, 2025):

再验证一下 commit c21258f192f1ce01c96d60b2cc67d557fa29172a

<!-- gh-comment-id:2814973631 --> @fudiwei commented on GitHub (Apr 18, 2025): 再验证一下 commit c21258f192f1ce01c96d60b2cc67d557fa29172a
Author
Owner

@Anbool commented on GitHub (Apr 18, 2025):

再验证一下 commit c21258f

测试流程通过了,但是程序会一直处于 INFO waiting for deployment task completion ... 状态,但已经部署完成了。
响应体:

      {
         "id": "2eb7c927-5c5c-67a24bdc8209",
         "name": "部署加速项目“Test-01”的版本12",
         "submissionTime": "2024-03-12T15:03:00Z",
         "finishTime": "2024-03-12T15:06:48Z",
         "status": "succeeded",
         "target": "production",
         "apiRequestId": "309e3eb2f0"
      }
<!-- gh-comment-id:2815096623 --> @Anbool commented on GitHub (Apr 18, 2025): > 再验证一下 commit [c21258f](https://github.com/usual2970/certimate/commit/c21258f192f1ce01c96d60b2cc67d557fa29172a) 测试流程通过了,但是程序会一直处于 INFO waiting for deployment task completion ... 状态,但已经部署完成了。 响应体: ```json { "id": "2eb7c927-5c5c-67a24bdc8209", "name": "部署加速项目“Test-01”的版本12", "submissionTime": "2024-03-12T15:03:00Z", "finishTime": "2024-03-12T15:06:48Z", "status": "succeeded", "target": "production", "apiRequestId": "309e3eb2f0" } ```
Author
Owner

@fudiwei commented on GitHub (Apr 18, 2025):

再验证一下 commit c10ceed753 ,然后看一下日志打印的 current status 是什么?

<!-- gh-comment-id:2815126192 --> @fudiwei commented on GitHub (Apr 18, 2025): 再验证一下 commit c10ceed75345543cc6d2c669988e826c3d93f3c2 ,然后看一下日志打印的 current status 是什么?
Author
Owner

@fudiwei commented on GitHub (Apr 19, 2025):

@Anbool Any updates?

<!-- gh-comment-id:2816506936 --> @fudiwei commented on GitHub (Apr 19, 2025): @Anbool Any updates?
Author
Owner

@Anbool commented on GitHub (Apr 19, 2025):

@Anbool Any updates?

抱歉延迟的更新。看到日志打印了为空。在 2025/04/19 04:16:58 之前就已经部署完成了。

2025/04/19 04:16:04 INFO ssl certificate uploaded certUrl=https://open.chinanetcenter.com/cdn/certificates/1c2a2e3/versions/13
2025/04/19 04:16:09 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:16:15 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:16:21 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:16:27 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:16:34 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:16:40 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:16:46 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:16:52 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:16:58 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:17:04 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:17:10 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:17:16 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:17:22 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 04:17:28 INFO waiting for deployment task completion (current status: ) ...
<!-- gh-comment-id:2816517652 --> @Anbool commented on GitHub (Apr 19, 2025): > [@Anbool](https://github.com/Anbool) Any updates? 抱歉延迟的更新。看到日志打印了为空。在 **2025/04/19 04:16:58** 之前就已经部署完成了。 ```shell 2025/04/19 04:16:04 INFO ssl certificate uploaded certUrl=https://open.chinanetcenter.com/cdn/certificates/1c2a2e3/versions/13 2025/04/19 04:16:09 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:16:15 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:16:21 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:16:27 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:16:34 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:16:40 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:16:46 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:16:52 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:16:58 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:17:04 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:17:10 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:17:16 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:17:22 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 04:17:28 INFO waiting for deployment task completion (current status: ) ... ```
Author
Owner

@fudiwei commented on GitHub (Apr 19, 2025):

为啥 status 是空呢…… 😕

@Anbool 日志里 sdk request 'cdn.GetDeploymentTaskDetail' 这条展开看一下 response 是啥?


如果你是跑的单测的话这个日志级别是 DEBUG 不会显示在控制台上,你可以修改 internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go 第 204 行,将 d.logger.Debug(...) 改为 d.logger.Info(...)

<!-- gh-comment-id:2816553001 --> @fudiwei commented on GitHub (Apr 19, 2025): 为啥 status 是空呢…… 😕 @Anbool 日志里 `sdk request 'cdn.GetDeploymentTaskDetail'` 这条展开看一下 response 是啥? --- 如果你是跑的单测的话这个日志级别是 DEBUG 不会显示在控制台上,你可以修改 internal/pkg/core/deployer/providers/wangsu-cdnpro/wangsu_cdnpro.go 第 204 行,将 `d.logger.Debug(...)` 改为 `d.logger.Info(...)`
Author
Owner

@Anbool commented on GitHub (Apr 19, 2025):

就返回了以下内容

2025/04/19 14:59:56 INFO waiting for deployment task completion (current status: ) ...
2025/04/19 15:00:02 INFO sdk request 'cdn.GetDeploymentTaskDetail' taskId="" response="&{baseResponse:{RequestId:0xc0002043a0 Code:<nil> Message:<nil>} Id: Name: Target: Actions:[] Status: StatusDetails: SubmissionTime: FinishTime: ApiRequestId:}"
<!-- gh-comment-id:2816741097 --> @Anbool commented on GitHub (Apr 19, 2025): 就返回了以下内容 ```shell 2025/04/19 14:59:56 INFO waiting for deployment task completion (current status: ) ... 2025/04/19 15:00:02 INFO sdk request 'cdn.GetDeploymentTaskDetail' taskId="" response="&{baseResponse:{RequestId:0xc0002043a0 Code:<nil> Message:<nil>} Id: Name: Target: Actions:[] Status: StatusDetails: SubmissionTime: FinishTime: ApiRequestId:}" ```
Author
Owner

@fudiwei commented on GitHub (Apr 20, 2025):

😵‍💫 为啥都是空……

Image

@Anbool 这个不是 Response Body 吗?

<!-- gh-comment-id:2816961523 --> @fudiwei commented on GitHub (Apr 20, 2025): 😵‍💫 为啥都是空…… > ![Image](https://github.com/user-attachments/assets/230cdba7-3f65-49e0-abff-e4320634ddf5) @Anbool 这个不是 Response Body 吗?
Author
Owner

@Anbool commented on GitHub (Apr 20, 2025):

@fudiwei 大哥,你可以给我一个邮箱不,我把 Key 都发给你,你调试看看可能比较快?

<!-- gh-comment-id:2817078784 --> @Anbool commented on GitHub (Apr 20, 2025): @fudiwei 大哥,你可以给我一个邮箱不,我把 Key 都发给你,你调试看看可能比较快?
Author
Owner

@Anbool commented on GitHub (Apr 20, 2025):

已发送,请查收。测试域名直接操作,不需要我二次确认。此外所需的 API 访问权限都已经开通了。另外最好是在控制台引导用户在使用之前先检查 API 权限是否已经开通,避免后期造成不必要的 issues,大部分 API 权限可以在 https://apiexplorer.wangsu.com/apiexplorer/overview 门户直接开通和查看。辛苦了!

<!-- gh-comment-id:2817124706 --> @Anbool commented on GitHub (Apr 20, 2025): 已发送,请查收。测试域名直接操作,不需要我二次确认。此外所需的 API 访问权限都已经开通了。另外最好是在控制台引导用户在使用之前先检查 API 权限是否已经开通,避免后期造成不必要的 issues,大部分 API 权限可以在 https://apiexplorer.wangsu.com/apiexplorer/overview 门户直接开通和查看。辛苦了!
Author
Owner

@fudiwei commented on GitHub (Apr 21, 2025):

@Anbool 感谢提供测试环境,问题已修复。记得重置 AK/SK,以免数据泄露。

<!-- gh-comment-id:2817448464 --> @fudiwei commented on GitHub (Apr 21, 2025): @Anbool 感谢提供测试环境,问题已修复。记得重置 AK/SK,以免数据泄露。
Author
Owner

@Anbool commented on GitHub (Apr 21, 2025):

@Anbool 感谢提供测试环境,问题已修复。记得重置 AK/SK,以免数据泄露。

感谢您的工作,相关数据已处理。期待新版本发布。

<!-- gh-comment-id:2817492177 --> @Anbool commented on GitHub (Apr 21, 2025): > [@Anbool](https://github.com/Anbool) 感谢提供测试环境,问题已修复。记得重置 AK/SK,以免数据泄露。 感谢您的工作,相关数据已处理。期待新版本发布。
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/certimate#409
No description provided.