"Export" Ruby 中的 x509 证书
"Export" x509 certificate in Ruby
我正在与具有以下指示的 API 通信:
- 将颁发的 x509 证书安装到客户端服务器上。
- 使用提供的密码和默认机器密钥集将 x509 证书导出到内存中。
- Base64 对 x509 证书的导出字节进行编码。
- 将“X509Certificate”添加为 HTTP header 并将其值设置为步骤 3 的结果。
第 1 步和第 4 步很简单,但我对第 2 步或第 3 步的 'export' 部分一无所知。我已经尝试使用谷歌搜索一段时间了,但我不确定究竟从哪里开始.
有人能为我指明如何 "export" 带有 "machine key set" 的证书的正确方向吗?
这是我目前的情况
raw_data = File.read('cert.pfx')
pkcs = OpenSSL::PKCS12.new(raw_data, 'password')
cert = OpenSSL::X509::Certificate.new(pkcs.certificate.to_pem)
这是等效的 .NET 代码:
public string GetBase64Cert(string certificateThumbprint)
{
using (X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
store.Open(OpenFlags.ReadOnly);
var foundCertificates = store.Certificates.Find(X509FindType.FindByThumbprint, certificateThumbprint, false);
if (foundCertificates.Count != 1)
{
return null;
}
var certByteArray = foundCertificates[0].Export(X509ContentType.Cert);
store.Close();
return Convert.ToBase64String(certByteArray);
}
}
等同于PHP代码:
public function setx509($x509file) {
$cert = openssl_x509_parse($x509file);
$base64cert = base64_encode($cert);
return $base64cert;
}
尝试
pkcs = OpenSSL::PKCS12.new(File.read('cert.pfx'), 'password')
str = Base64.urlsafe_encode64(pkcs.certificate.to_der)
可能还 str.gsub(/=+$/, '')
切断填充
我正在与具有以下指示的 API 通信:
- 将颁发的 x509 证书安装到客户端服务器上。
- 使用提供的密码和默认机器密钥集将 x509 证书导出到内存中。
- Base64 对 x509 证书的导出字节进行编码。
- 将“X509Certificate”添加为 HTTP header 并将其值设置为步骤 3 的结果。
第 1 步和第 4 步很简单,但我对第 2 步或第 3 步的 'export' 部分一无所知。我已经尝试使用谷歌搜索一段时间了,但我不确定究竟从哪里开始.
有人能为我指明如何 "export" 带有 "machine key set" 的证书的正确方向吗?
这是我目前的情况
raw_data = File.read('cert.pfx')
pkcs = OpenSSL::PKCS12.new(raw_data, 'password')
cert = OpenSSL::X509::Certificate.new(pkcs.certificate.to_pem)
这是等效的 .NET 代码:
public string GetBase64Cert(string certificateThumbprint)
{
using (X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
store.Open(OpenFlags.ReadOnly);
var foundCertificates = store.Certificates.Find(X509FindType.FindByThumbprint, certificateThumbprint, false);
if (foundCertificates.Count != 1)
{
return null;
}
var certByteArray = foundCertificates[0].Export(X509ContentType.Cert);
store.Close();
return Convert.ToBase64String(certByteArray);
}
}
等同于PHP代码:
public function setx509($x509file) {
$cert = openssl_x509_parse($x509file);
$base64cert = base64_encode($cert);
return $base64cert;
}
尝试
pkcs = OpenSSL::PKCS12.new(File.read('cert.pfx'), 'password')
str = Base64.urlsafe_encode64(pkcs.certificate.to_der)
可能还 str.gsub(/=+$/, '')
切断填充