من از opensl برای تبدیل پرونده * صادر شده * استفاده می كنم. p12 را به پرونده * تبدیل كنم.
پرونده P12 با یک رمز عبور صادر شده است ، این دستوری است که من برای تولید پرونده PEM استفاده می کنم:
opensl pkcs12 -clcerts -in eksported.p12 -out هر دو.pem
وقتی آن فرمان را اجرا می کنم یک عبارت PEM را ارائه می کنم ، مطالب مانند این است:
ویژگی های کیف
FriendName: نام دوستانه: com.example.org
localKeyID: 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99
... سایر صفات حذف شده ...
----- شروع گواهی -----
MIIGijCCBXKgAwIBAgIIQzWHsGhNz0wwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV
... محتویات گواهی ...
----- تصدیق نهایی -----
ویژگی های کیف
دوستانه نام: نام من
localKeyID: 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99
ویژگی های اصلی:
----- شروع کلید خصوصی رمزگذاری شده -----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIQ9XzwbRcn0ACAggA
... محتویات کلید ...
----- پایان کلید خصوصی رمزگذاری شده -----
بعد از تهیه فایل PEM؛ من سعی می کنم تا با استفاده از بسته های [Crypto/tls Go و crypto / x509 Go ، مانند این:
var block * pem.Block
برای {
بلاک ، بایت = pem.Decode (بایت)
اگر block.Type == "کلید خصوصی" || strings.HasSuffix (block.Type ، "کلید خصوصی") {
بایت ، err: = x509.DecryptPEMBlock (بلوک ، [] بایت (رمز عبور))
اگر اشتباه! = nil
بازگشت صفر ، اشتباه است
}
}
}
با این حال ، قطعه خطای زیر را برمی گرداند:
خطا: ازPEMBytes: x509: هیچ عنوان DEK-Info در بلوک وجود ندارد
خواندن کمی روی عنوان DEK-Info آن را به نظر می رسد که باید مانند این باشد:
----- BEGIN ENCRYPTED PRIVATE KEY -----
نسخه نوع: 4 ، رمزگذاری شده
DEK-Info: DES-EDE3-CBC، 5B01E932988DC66B
EPESt4ZVIrxnQXxxWWVa7cCR + vgNZ / 4vTu4mdq6pjaW7jMZoB8HV + mA745mQkQw7
... محتویات کلید خصوصی ...
اما به نظر نمی رسد که چگونه می توانم OpenSSL را برای اضافه کردن چنین سرصفحات به پرونده PEM دریافت کنم ، من از نسخه OpenSSL زیر استفاده می کنم:
➜ ~ نسخه Opensl
LibreSSL 2.8.3
آیا من چیزی آشکار را از دست داده ام؟ هرگونه کمک واقعاً قدردانی می شود!