跳到主要内容

密钥设置

为了确保通信的安全性和完整性,PayCloud要求第三方应用在与其交互时使用API密钥和签名、加密机制。

1. API密钥

  • 为了验证通信双方的身份并确保消息未被第三方篡改,所有报文需要进行签名。
    • 签名使用RSA算法进行,通信双方各自生成一组RSA密钥并交换公钥。
    • 请求时使用私钥进行签名,接收方使用公钥进行验证。
    • 务必保证私钥的安全存储与管理。
  • 为了保证数据的安全性,部分参数需要进行加密。
    • 部分敏感数据,例如卡号、CVV、有效期等需要进行加密传输,请求方使用对方的公钥进行加密,接收方使用自己的私钥进行解密。

2. 生成密钥对

生成密钥对时,以下几点需注意:

  • 使用Java语言时,私钥的格式为PKCS8;其他语言使用PKCS1。
  • 密钥长度应为2048位。
  • 公钥的格式通常为PEM,但一些语言(如C#)需要DER格式的公钥,这些公钥可能需要转换。

生成密钥的方法有很多种:

  • 可以选择使用openssl命令手动生成RSA2密钥,具体操作如下所示:
# 1. 生成私钥
openssl genrsa -out client_private_key.pem

# 2. 如果您是Java开发者,需要将私钥转换为PKCS8格式,其他开发语言使用PKCS1格式
openssl pkcs8 -topk8 -inform PEM -in client_private_key.pem -outform PEM -nocrypt -out client_private_key_pkcs8.pem

# 3. 生成公钥
openssl rsa -in client_private_key.pem -pubout -out client_public_key.pem

# 4. 生成Java可用的私钥
cat client_private_key_pkcs8.pem | grep -v "^\-" | tr -d "\n" | sed 's/%$//' > client_private_key_java.pem

# 5. 生成Java可用的公钥
cat client_public_key.pem | grep -v "^\-" | tr -d "\n" | sed 's/%$//' > client_public_key_java.pem

  • 另外,我们也提供了密钥工具(PayCloud Key Tool),可直接生成密钥、签名和验证签名
Using PayCloud's signature tool to generate rsa keys

3. 交换密钥

第三方应用与PayCloud之间需要交换公钥,此过程可参考 配置应用密钥 章节在平台上完成设置