要使用Artifactory和ECDSA签名密钥,您可以按照以下步骤操作:
生成ECDSA密钥对
openssl ecparam -name prime256v1 -genkey -noout -out private_key.pem
openssl ec -in private_key.pem -pubout -out public_key.pem
将生成的私钥和公钥分别保存为private_key.pem和public_key.pem。
在Artifactory中配置ECDSA签名密钥
使用ECDSA签名密钥进行Artifactory API请求 您可以使用以下示例代码来生成ECDSA签名密钥,并将其用于Artifactory API请求。
import requests
import hashlib
import base64
import datetime
import ecdsa
def sign_ecdsa(private_key, data):
sk = ecdsa.SigningKey.from_pem(private_key)
signature = sk.sign(data.encode())
return base64.b64encode(signature).decode()
def get_artifact(url, private_key_path):
private_key = open(private_key_path, 'r').read()
current_time = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
headers = {
'X-JFrog-Art-Api': 'API_KEY',
'X-JFrog-Art-Api-Signer': 'ecdsa',
'X-JFrog-Art-Api-Date': current_time
}
request = requests.get(url, headers=headers)
data = request.text
signature_data = f"GET\n\n\n{current_time}\n/api/storage/{data}"
signature = sign_ecdsa(private_key, signature_data)
headers['X-JFrog-Art-Api-Signature'] = signature
request = requests.get(url, headers=headers)
return request.text
private_key_path = 'private_key.pem'
artifact_url = 'https:///api/storage//'
response = get_artifact(artifact_url, private_key_path)
print(response)
注意替换代码中的API_KEY
、
、
和
为实际的值。