OpenSSL یک جعبه ابزار قوی ، تجاری و کامل برای پروتکل های لایه امنیتی (TLS) و لایه های سوکت امن (SSL) است
این کتابخانه ای است که پروتکل های رمزنگاری را برای برنامه ها فراهم می کند.
فرآیند ایجاد گواهی نامه های خود امضا شده در رایانه
با توجه به اینکه این یک نیاز مکرر است ، می تواند یک کار دلهره آور باشد ، ایجاد اتوماتیک گواهینامه ها ضروری است.
در آموزش امروز ، شما را در مراحل ایجاد گواهینامه های SSL امضا شده با Ansible در یک دستگاه لینوکس راهنمایی می کنم.
هنگام کار با OpenSSL ، کلیدهای عمومی از کلید خصوصی مربوطه گرفته می شوند.
اولین قدم همیشه تولید کلید خصوصی با استفاده از یک الگوریتم خاص است.
برای استفاده در تولید ، شما به یک مرجع صدور گواهینامه (CA) یا یک مرجع صدور گواهینامه نیاز دارید که پاسخ دهد. برای امضای گواهی که
از آنجا که ما در مورد موارد استفاده از Dev و Lab صحبت می کنیم ، در حال ایجاد یک گواهینامه خود امضا هستیم.
ایجاد یک گواهی OpenSSL با Ansible
در مثالهای نشان داده شده در این مقاله ، کلید خصوصی hostname_privkey.pem نامگذاری شده است. پرونده گواهینامه hostname_fullchain.pem و پرونده CSR hostname.csr است ، جایی که نام میزبان DNS واقعی است که برای آن گواهی ایجاد شده است.
قبل از شروع ما
--- نصب Ansible در Fedora ---
$ sudo dnf قابل نصب است
--- نصب Ansible در CentOS 8 / CentOS 7 ---
$ sudo yum - نسخه epel را نصب می کنید
$ sudo yum قابل نصب است
--- نصب Ansible در اوبونتو ---
$ sudo apt update
$ sudo apt نرم افزار-خواص-رایج را نصب کنید
$ sudo apt-add-repository - بله - به روزرسانی ppa: قابل قبول / پاسخگو
$ sudo apt نصب قابل قبول است
--- نصب Ansible در دبیان ---
$ echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu معتبر اصلی" | sudo tee -a /etc/apt/sources.list
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt نصب قابل قبول است
--- نصب Ansible در Arch Linux ---
$ pacman -S ansible
با بررسی نسخه نصب Ansible را تأیید کنید.
$ ansible --version
پاسخگو - برگرداندن
قابل قبول 2.9.11
پرونده پیکربندی = وجود ندارد
مسیر جستجوی ماژول پیکربندی شده = ['/usr/share/ansible/plugins/modules']
موقعیت ماژول پایتون قابل قبول = /usr/local/Cellar/ansible/2.9.11/libexec/lib/python3.8/site-packages/ansible
مکان اجرایی = / usr / local / bin / ansible
نسخه python = 3.8.5 (پیش فرض ، 21 ژوئیه 2020 ، 10:48:26) [Clang 11.0.3 (clang-1103.0.32.62)]
نصب وابستگی ها
pyOpenSSL برای تولید کلیدها و گواهینامه ها با استفاده از Ansible لازم است.
--- نصب با pip2 ---
$ sudo pip pyOpenSSL را نصب کنید
--- نصب با pip3 ---
$ sudo pip3 install pyOpenSSL
نوشتن یک کتاب بازی Ansible برای تولید یک گواهینامه خود امضا شده
با نصب وابستگی ها ، باید شروع به ایجاد یک گواهینامه با استفاده از Ansible کنیم.
ما یک کتاب بازی واحد ایجاد می کنیم که وظایف ایجاد یک کلید خصوصی ، CSR و گواهی را دارد. [19659002] من شما را از طریق بلوک به بلوک هر ویژگی رد می کنم ، و بعداً همه چیز را با هم ترکیب می کنیم تا یک کتاب بازی فعال کنید.
ایجاد پوشه های پروژه:
$ mkdir -p ~ / projects / ansible / {گواهینامه ها ، پرونده ها ، الگوها}
$ سی دی projects / پروژه ها /
درخت $
...
`- پاسخگو
| - گواهینامه ها
| - پرونده ها
`- الگوها
4 دایرکتوری ، 0 پرونده
ایجاد یک الگوی کتاب بازی
$ vim ~ / projects / ansible / openssl_certificates.yml
بخشهای استاندارد اضافه کنید.
---
- میزبان: localhost
vars:
تولید یک کلید خصوصی OpenSSL با Ansible
برای تولید کلید خصوصی کاری اضافه کنید
ما برای ایجاد کلیدهای خصوصی OpenSSL از ماژول openssl_privatekey استفاده می کنیم.
این ماژول می تواند RSA ، DSA ، ECC یا EdDSA با فرمت PEM.
پارامترهایی مانند عبارت عبور و اندازه کلید نباید تغییر کند مگر اینکه بخواهید کلیدها در هنگام راه اندازی مجدد بازیابی شوند.
با استفاده از دستور زیر می توانید مستندات این ماژول را مشاهده کنید:
$ ansible-doc openssl_privatekey
من از گزینه های زیر استفاده خواهم کرد:
- اندازه کلید: 4096 بیت
- نوع کلید: RSA
- پشتیبان: بله
شما اگر به کلید نیاز دارید می توانید یک عبارت عبور برای آن تنظیم کنید.
cd ~ / projects / ansible / vim openssl_certificates.yml
وظیفه من برای تولید یک کلید خصوصی به این شکل است.
---
- میزبان: localhost
vars:
- نام سرور: itsecforu.ru
- اندازه_ کلید: 4096
- عبارت عبور: # اگر عبارت عبور را می خواهید تنظیم کنید
- نوع_ کلید: DSA # دیگر شامل DSA ، ECC ، Ed25519 ، Ed448 ، X25519 ، X448 است
وظایف:
- نام: یک کلید خصوصی OpenSSL ایجاد کنید
openssl_privatekey:
مسیر: "./certificates / {{server_hostname}} _ privkey.pem"
اندازه: "{{key_size}}"
نوع: "{{key_type}}"
پشتیبان گیری: بله
کتاب تولید را برای تولید کلید خصوصی شروع کنید.
$ ansible-playbook openssl_certificates.yml
بازی [localhost] *************************************** ******************************************* *******************************************
وظیفه [Gathering Facts] *************************************** ******************************************* *************************************
خوب: [localhost]
وظیفه [Generate an OpenSSL private key] **************************************** ******************************************* *************************
تغییر کرد: [localhost]
PLAY RECAP ****************************************** ******************************************* ******************************************* ***
localhost: خوب = 2 تغییر یافته = 1 غیرقابل دسترسی = 0 ناموفق = 0 پرش شده = 0 نجات یافته = 0 نادیده گرفته شده = 0
تأیید تولید کلید.
گواهی $ ls /
itsecforu.ru_privkey.pem
تولید OpenSSL CSR با Ansible
وظیفه بعدی که اضافه خواهیم کرد ایجاد درخواست امضای گواهی OpenSSL (CSR) است.
می توان از آن برای درخواست امضای گواهینامه CA استفاده کرد.
ماژول openssl_csr برای این عملیات استفاده شده است.
اینطور است که فایل کتاب پخش به روز شده به نظر می رسد:
$ cat openssl_certificates.yml
---
- میزبان: localhost
vars:
- نام سرور: itsecforu.ru
- اندازه_ کلید: 4096
- عبارت عبور: # اگر عبارت عبور را می خواهید تنظیم کنید
- نوع_کلید: RSA # دیگر شامل DSA ، ECC ، Ed25519 ، Ed448 ، X25519 ، X448
- نام کشور: KE
- آدرس ایمیل: [email protected]
- name_ سازمان: itsecforu
وظایف:
- نام: یک کلید خصوصی OpenSSL ایجاد کنید
openssl_privatekey:
مسیر: "./certificates / {{server_hostname}} _ privkey.pem"
اندازه: "{{key_size}}"
نوع: "{{key_type}}"
پشتیبان گیری: بله
- name: یک درخواست امضای گواهی OpenSSL با اطلاعات موضوع ایجاد کنید
openssl_csr:
مسیر: "./certificates / {{server_hostname}}. csr"
privatekey_path: "./certificates / {{server_hostname}} _ privkey.pem"
country_name: "{{country_name}}"
Organization_name: "{{Organization_name}}"
email_address: "{{email_address}}"
common_name: "{{server_hostname}}"
نحو را قبل از اجرا بررسی کنید:
$ ansible-playbook - syntax-check openssl_certificates.yml
playbook: openssl_certificates.yml
ایجاد گواهی OpenSSL با Ansible
ماژول openssl_certificate Ansible برای تولید گواهی OpenSSL استفاده می شود.
این ماژول مفهوم ارائه دهنده ای را برای گواهی شما پیاده سازی می كند. (19659006] ما گواهی خود امضا ایجاد خواهیم كرد ، اما می توانید از ارائه دهندگان دیگر استفاده كنید.
کتاب نمایش به روز شده:
---
- میزبان: localhost
vars:
- نام سرور: itsecforu.ru
- key_size: 4096
- عبارت عبور: # اگر عبارت عبور را می خواهید تنظیم کنید
- نوع_ کلید: RSA # دیگر شامل DSA ، ECC ، Ed25519 ، Ed448 ، X25519 ، X448 است
- نام کشور: KE
- آدرس ایمیل: [email protected]
- name_ سازمان: itsecforu
وظایف:
- نام: یک کلید خصوصی OpenSSL ایجاد کنید
openssl_privatekey:
مسیر: "./certificates / {{server_hostname}} _ privkey.pem"
اندازه: "{{key_size}}"
نوع: "{{key_type}}"
پشتیبان گیری: بله
- name: یک درخواست امضای گواهی OpenSSL با اطلاعات موضوع ایجاد کنید
openssl_csr:
مسیر: "./certificates / {{server_hostname}}. csr"
privatekey_path: "./certificates / {{server_hostname}} _ privkey.pem"
country_name: "{{country_name}}"
Organization_name: "{{Organization_name}}"
email_address: "{{email_address}}"
نام_معمول: "{{server_hostname}}"
- نام: یک گواهی OpenSSL خود امضا ایجاد کنید
گواهی openssl:
مسیر: "./certificates / {{server_hostname}} _ cert.pem"
privatekey_path: "./certificates / {{server_hostname}} _ privkey.pem"
csr_path: "./certificates / {{server_hostname}}. csr"
ارائه دهنده: selfsigned
سرانجام ، ما نحو را بررسی کرده و playbook را برای تولید گواهینامه اجرا می کنیم.
$ ansible-playbook --syntax-check openssl_certificates.yml
playbook: openssl_certificates.yml
بیایید آن را اجرا کنیم:
$ ansible-playbook openssl_certificates.yml
خروجی اجرای:
PLAY [localhost] *************** ******************************************* ******************************************* ****************************
وظیفه [Gathering Facts] **************************************** ******************************************* *************************************
خوب: [localhost]
وظیفه [Generate an OpenSSL private key] **************************************** ******************************************* *************************
تغییر کرد: [localhost]
وظیفه [Generate an OpenSSL Certificate Signing Request with Subject information] *************************************** ********************************
تغییر کرد: [localhost]
وظیفه [Generate a Self Signed OpenSSL certificate] *************************************** ******************************************* ****************
تغییر کرد: [localhost]
PLAY RECAP ****************************************** ******************************************* ******************************************* ***
localhost: خوب = 4 تغییر یافته = 3 غیرقابل دسترسی = 0 شکست خورده = 0 پرش شده = 0 نجات یافته = 0 نادیده گرفته شده = 0
بیایید لیستی از فایل ها را برای بررسی گواهینامه های ایجاد شده نمایش دهیم:
$ درخت گواهی نامه /
گواهینامه ها /
| - itsecforu.ru.csr
| - itsecforu.ru_cert.pem
| - itsecforu.ru_privkey.pem
"- itsecforu.ru_privkey.pem.56610.2020-09-10@00: 39: 50
0 دایرکتوری ، 4 پرونده
می توانید اطلاعات گواهی را با استفاده از دستور openssl بررسی کنید.
$ openssl x509 -in certificates / itsecforu.ru_cert.pem -text
گواهینامه:
داده ها:
نسخه: 3 (0x2)
شماره سریال:
49: 90: 1b: 9a: 7c: 24: c1: d2: 7e: b4: ba: 70: 66: 46: cb: e9: 52: 63: ae: f9
الگوریتم امضا: sha256WithRSAEncryption
صادرکننده: C = KE، O = itsecforu، CN=itsecforu.ru/[email protected]
اعتبار
قبل از این: 9 سپتامبر 21:39:52 2020 GMT
نه بعد: 7 سپتامبر 21:39:52 2030 به وقت گرینویچ
موضوع: C = KE ، O = itsecforu ، CN=itsecforu.ru/[email protected]
اطلاعات کلید عمومی موضوع:
الگوریتم کلید عمومی: rsaEncryption
کلید عمومی: (4096 بیت)
مدول:
00: d8: 82: 6e: d9: c6: 1d: 7d: 86: 0b: 96: 37: 5e: 6c: 78:
09: 83: 35: be: a0: 44: 73: c4: f6: cb: f3: 50: a1: 09: 3e:
4a: 3c: 43: 74: 64: 8c: c5: 77: de: a6: bf: 28: ba: 53: a4:
c2: a5: 41: 5a: 63: bd: f7: f4: 0a: 1e: 21: d7: 52: e9: 30:
a0: 1b: b7: c0: 2f: c6: 3a: 3b: 81: 03: 1e: d5: 47: 8b: 43:
98: 5d: cb: 2e: a7: 7b: 90: a4: b8: 54: 37: e5: e4: da: 85:
61: 1d: 49: da: 6b: 72: 48: a4: af: 72: d0: 26: 27: 7d: e2:
1b: ec: 40: 0f: 96: 55: 44: 87: 69: 1d: 30: 8a: c7: 51: da:
19: c2: cc: 08: 9f: 73: f5: 56: f8: 26: ab: d3: e9: 7e: 87:
9c: 05: 9a: 14: e7: 6d: fe: 88: 3c: f3: 6a: aa: 26: e6: 6c:
bf: 82: 58: 19: 1d: 66: 80: 3e: 69: f1: 05: 97: 92: 43: df:
f9: 66: 8f: b7: b1: b8: db: c3: 3a: c6: 87: ec: 0a: d0: 84:
19: cc: 2c: ca: 28: a6: 44: 0c: 96: 3b: 45: 4a: 79: 1e: 6d:
04: 75: b2: 8d: f0: b7: dc: 00: 9f: 21: 36: 22: 42: ff: da:
ec: 36: da: 70: 83: 11: d6: 67: 4b: b6: 26: 03: 6d: 6c: d5:
7d: bb: 7c: 11: 8a: c8: b8: d3: 6d: 37: 5b: b8: 63: 48: e4:
3a: 62: a7: ec: 18: 50: bf: 1e: 19: 75: 97: 2f: 06: de: e8:
5e: 03: a6: 67: 4e: 99: 31: 1c: 6a: db: ad: 82: 9c: a8: ff:
21: f4: e9: f9: 0d: 92: 40: ec: db: 42: 05: 8f: af: 65: 0f:
60: 1f: d8: 36: 1f: 9a: 94: 30: 3e: 32: bb: 61: fd: 8f: 7f:
ae: 00: a2: 73: cd: 1c: 2c: 31: 69: 0f: f0: 2e: c7: db: e5:
77: 71: 09: 32: 72: 33: 85: 26: 84: 7a: 6d: 07: 7e: ed: a6:
6c: ef: 87: fa: 3e: a4: a7: 5a: b5: 5a: 91: b0: 74: f1: 3d:
e6: 01: 45: 6d: ab: 74: e3: be: 25: 28: f7: 6e: 68: 52: e1:
91: 41: d6: 8f: 4a: d9: ed: e0: 35: 55: 51: 23: 1b: dd: 9d:
4c: 0b: b9: df: 7e: ff: 84: 64: 80: 78: 09: 6a: a0: 1c: f6:
ce: 91: 56: 34: 96: 43: 84: 90: 72: 57: bd: dd: e3: 24: 02:
ad: 4d: 5b: 81: bf: 55: 45: 34: a9: b2: 0c: 91: 02: 34: 09:
da: 4e: 0b: 95: e1: 90: f0: ff: b6: 17: 70: 6f: b5: 6a: 5e:
b0: 40: 51: e3: a2: 0a: c5: 57: e9: 49: db: 1a: d3: bf: ca:
72: cd: 13: 5e: 2e: 1f: 28: 83: 7a: 82: ff: dc: 07: 6d: 90:
b4: 15: 3d: c3: 27: f9: 23: 7c: fc: d1: 8d: 56: 89: 40: 5a:
cd: d6: a5: 48: 22: b2: 84: df: 6e: bd: 65: df: 5b: 6c: a4:
62: 36: 23: a1: c7: 5c: b1: 18: 1e: 9f: 2a: 99: d0: 2a: 08:
5d: b1: 39
نماینده: 65537 (0x10001)
پسوندهای X509v3:
X509v3 نام جایگزین موضوع:
DNS: itsecforu.ru
شناسه اصلی موضوع X509v3:
61: 1D: 2F: F8: CC: 9F: 86: 65: 07: C9: 9A: 0E: 07: 6C: 97: A5: 30: 96: A5: 0D
الگوریتم امضا: sha256WithRSAEncryption
84: 49: cd: dd: 2d: 7c: 5e: 02: b1: 3c: 96: 36: a8: 79: 2a: b4: f4: dc:
ae: 63: 84: 31: 86: de: bf: e5: f0: f4: 30: 84: f1: 8f: 99: 31: c1: d6:
45: 37: c3: dc: آگهی: 16: 0f: 13: 27: ed: 75: 98: 4e: 01: 88: ec: 1c: e4:
7c: 63: e2: 06: 5f: bc: 61: 11: 3a: 22: f4: 48: f7: f2: af: a9: 83: 81:
0b: 2e: 09: 19: 90: 3b: a5: 77: eb: 3a: 4d: cf: 96: e2: e4: 74: f3: 79:
4a: 88: 96: 1d: c8: 3a: 44: a6: 6e: 00: d3: fe: d8: f9: 1a: d7: f4: 14:
b4: 75: 0f: a4: 4a: 0e: 4d: 6a: de: 73: f0: 10: e2: 9c: 7d: 19: 88: 1d:
20: a9: b2: 96: 65: 62: 12: 18: e7: f3: 0a: 5f: 8c: e6: 18: 82: 97: 24:
f5: 2f: 78: 8e: 51: 5c: b0: 53: a6: aa: 41: 1d: ac: 3d: e3: 34: 8c: 13:
6e: b2: 4d: e0: f9: be: 10: 40: a3: de: ea: e7: 81: 4a: b8: 05: 15: ed:
3f: 72: 52: 60: a4: f5: b5: 81: fa: 8d: a9: d7: ec: 54: 0f: 01: ec: 06:
d2: 05: 5f: c3: d4: ad: 66: eb: be: 3b: 37: c1: 55: a1: 00: 3c: 54: 4f:
c2: 0e: 2b: d1: 85: 6c: a2: bf: 6b: 8a: 37: e2: 22: a0: 74: 18: 12: 68:
34: 1b: e1: f4: e5: b3: 21: f1: a4: 40: cc: 15: 09: e8: 96: 4a: d9: 46:
5b: 32: 7f: cb: e1: ca: 17: f0: cf: af: 60: e1: 41: 60: 58: 6f: 1a: 96:
96: 80: a8: 2b: c1: 91: e7: b4: a8: e5: 02: ed: 78: fc: 8e: 76: 32: 90:
38: 64: e3: cc: 72: 5d: e9: 1b: 6b: 68: d0: 47: 78: 5d: b1: 8c: 1a: ba:
7f: 96: 3f: 7c: 67: 86: f1: 62: 6a: 64: d5: fe: 7f: 5e: 22: c4: 51: ae:
6d: 05: e5: 87: f8: df: 25: 28: f9: fd: f2: b3: a3: 8a: 08: e8: c6: 21:
0d: 6d: 85: fc: 89: 10: 31: 8f: e1: 7b: c7: 77: b2: 32: fc: 0c: b2: 13:
6a: c3: 18: a8: 54: 80: 5c: 54: 49: 98: 19: 09: d1: 88: 51: 0d: df: 29:
f7: e3: c2: 96: 13: dc: fa: 15: 0b: 8e: 4c: 79: 9a: 00: 8c: 8a: 6f: 4d:
96: 12: e3: 2a: 13: e4: 70: d4: 3e: 33: 70: d3: 1f: 81: 67: a2: 85: 90:
0b: 99: fc: 14: cb: 41: f2: 8b: 64: b5: 51: 38: 63: 1c: e2: a3: c2: 9e:
2e: e9: 8e: 86: d7: 75: ab: 7f: e7: a6: 12: b7: e5: 3d: 14: 4a: 6e: 65:
65: c2: fd: c9: 7f: bf: ee: 8c: 61: b7: 1d: f7: 2a: 22: 00: 34: 38: 5c:
72: 4c: 74: a1: b6: bd: 3e: 4f: 9a: 01: 91: 3f: 58: 51: d6: 23: 36: a9:
ae: ed: 84: 5d: ce: 96: c5: 3b: 0b: 06: 50: 81: 85: be: 1e: eb: 66: dd:
a4: d2: 98: 41: 50: 55: 1c: d4
----- گواهی شروع -----
MIIFuzCCA6OgAwIBAgIUSZAbmnwkwdJ + tLpwZkbL6VJjrvkwDQYJKoZIhvcNAQEL
BQAwdTELMAkGA1UEBhMCS0UxGjAYBgNVBAoMEUNvbXB1dGluZ2ZvcmdlZWtzMR4w
HAYDVQQDDBVjb21wdXRpbmdmb3JnZWVrcy5jb20xKjAoBgkqhkiG9w0BCQEWG2Fk
bWluQGNvbXB1dGluZ2ZvcmdlZWtzLmNvbTAeFw0yMDA5MDkyMTM5NTJaFw0zMDA5
MDcyMTM5NTJaMHUxCzAJBgNVBAYTAktFMRowGAYDVQQKDBFDb21wdXRpbmdmb3Jn
ZWVrczEeMBwGA1UEAwwVY29tcHV0aW5nZm9yZ2Vla3MuY29tMSowKAYJKoZIhvcN
AQkBFhthZG1pbkBjb21wdXRpbmdmb3JnZWVrcy5jb20wggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQDYgm7Zxh19hguWN15seAmDNb6gRHPE9svzUKEJPko8
Q3RkjMV33qa / KLpTpMKlQVpjvff0Ch4h11LpMKAbt8Avxjo7gQMe1UeLQ5hdyy6n
e5CkuFQ35eTahWEdSdprckikr3LQJid94hvsQA + WVUSHaR0wisdR2hnCzAifc / VW
+ Car0 + l + h5wFmhTnbf6IPPNqqibmbL + CWBkdZoA + afEFl5JD3 / lmj7exuNvDOsaH
7ArQhBnMLMoopkQMljtFSnkebQR1so3wt9wAnyE2IkL / 2uw22nCDEdZnS7YmA21s
1X27fBGKyLjTbTdbuGNI5Dpip + wYUL8eGXWXLwbe6F4DpmdOmTEcatutgpyo / yH0
6fkNkkDs20IFj69lD2Af2DYfmpQwPjK7Yf2Pf64AonPNHCwxaQ / wLsfb5XdxCTJy
M4UmhHptB37tpmzvh / o + pKdatVqRsHTxPeYBRW2rdOO + JSj3bmhS4ZFB1o9K2e3g
NVVRIxvdnUwLud9 + / 4RkgHgJaqAc9s6RVjSWQ4SQcle93eMkAq1NW4G / VUU0qbIM
kQI0CdpOC5XhkPD / thdwb7VqXrBAUeOiCsVX6UnbGtO / ynLNE14uHyiDeoL / 3Adt
kLQVPcMn + SN8 / NGNVolAWs3WpUgisoTfbr1l31tspGI2I6HHXLEYHp8qmdAqCF2x
OQIDAQABo0MwQTAgBgNVHREEGTAXghVjb21wdXRpbmdmb3JnZWVrcy5jb20wHQYD
VR0OBBYEFGEdL / jMn4ZlB8maDgdsl6UwlqUNMA0GCSqGSIb3DQEBCwUAA4ICAQCE
Sc3dLXxeArE8ljaoeSq09NyuY4Qxht6 / 5fD0MITxj5kxwdZFN8PcrRYPEyftdZhO
AYjsHOR8Y + IGX7xhEToi9Ej38q + pg4ELLgkZkDuld + s6Tc + W4uR083lKiJYdyDpE
pm4A0 / 7Y + RrX9BS0dQ + kSg5Nat5z8BDinH0ZiB0gqbKWZWISGOfzCl + M5hiClyT1
L3iOUVywU6aqQR2sPeM0jBNusk3g + b4QQKPe6ueBSrgFFe0 / clJgpPW1gfqNqdfs
VA8B7AbSBV / D1K1m6747N8FVoQA8VE / CDivRhWyiv2uKN + IioHQYEmg0G + H05bMh
8aRAzBUJ6JZK2UZbMn / L4coX8M + vYOFBYFhvGpaWgKgrwZHntKjlAu14 / I52MpA4
ZOPMcl3pG2to0Ed4XbGMGrp / lj98Z4bxYmpk1f5 / XiLEUa5tBeWH + N8lKPn98rOj
igjoxiENbYX8iRAxj + F7x3eyMvwMshNqwxioVIBcVEmYGQnRiFEN3yn348KWE9z6
FQuOTHmaAIyKb02WEuMqE + Rw1D4zcNMfgWeihZALmfwUy0Hyi2S1UThjHOKjwp4u
6Y6G13Wrf + emErflPRRKbmVlwv3Jf7 / ujGG3HfcqIgA0OFxyTHShtr0 + T5oBkT9Y
UdYjNqmu7YRdzpbFOwsGUIGFvh7rZt2k0phBUFUc1A ==
----- گواهی پایان -----
هنگامی که کلید و گواهی OpenSSL را ایجاد کردید ، می توانید از آن در برنامه های خود استفاده کنید