Как настраивать OpenVPN сервер в режиме point-to-point и client/server мы научились в предыдущих статьях. Для point-to-point режима мы использовали shared key. В режиме client/server нам были нужны сертификаты и ключи для OpenVPN сервера и клиентов. В данной статье пойдет речь о генерации инфраструктуры публичных ключей (PKI) и сертификатов используя Easy-RSA утилиту.
3. PKI схема
Немного расскажу о PKI структуре (рисунок 3.1).
Во главе всего дерева сертификатов и ключей должен быть корневой центр сертификации (CA). К примеру, можно посмотреть в браузере информацию о цепочке SSL сертификатов googl-a.
Рисунок 3.2 – Цепочка сертификатов google
Здесь во главе дерева стоит GeoTrust Global центр сертификации (корневой). Далее идет промежуточный Google Internet Authority G2 сертификат и завершает цепочку клиентский (доменный) сертификат. OpenVPN PKI структура будет похожей. Во главе должен быть корневой центр сертификации (Root CA) с файлом отзывов цифровых сертификатов (CRL). На CA сервере будут генерироваться клиентские и серверные ключи. Приступаем к практике.
3.1 Подготовка корневого центра сертификации
Для начала нужно скачать Easy-RSA утилиту, которую мы будем использовать для генерации всей инфраструктуры ключей.
root@vpn-server:~# wget https://github.com/OpenVPN/easy-rsa/releases/download/3.0.1/EasyRSA-3.0.1.tgz root@vpn-server:~# tar xavf EasyRSA-3.0.1.tgz EasyRSA-3.0.1/ EasyRSA-3.0.1/ChangeLog EasyRSA-3.0.1/COPYING EasyRSA-3.0.1/doc/ EasyRSA-3.0.1/easyrsa EasyRSA-3.0.1/gpl-2.0.txt EasyRSA-3.0.1/openssl-1.0.cnf EasyRSA-3.0.1/README.quickstart.md EasyRSA-3.0.1/vars.example EasyRSA-3.0.1/x509-types/ EasyRSA-3.0.1/x509-types/ca EasyRSA-3.0.1/x509-types/client EasyRSA-3.0.1/x509-types/COMMON EasyRSA-3.0.1/x509-types/server EasyRSA-3.0.1/doc/EasyRSA-Advanced.md EasyRSA-3.0.1/doc/EasyRSA-Readme.md EasyRSA-3.0.1/doc/EasyRSA-Upgrade-Notes.md EasyRSA-3.0.1/doc/Hacking.md EasyRSA-3.0.1/doc/Intro-To-PKI.md
Теперь переходим в распакованную директорию и редактируем главный файл конфигурации, в котором будет информация о организации.
root@vpn-server:~# cd EasyRSA-3.0.1 root@vpn-server:~/EasyRSA-3.0.1# cp vars.example vars root@vpn-server:~/EasyRSA-3.0.1# grep -v '#' vars ... set_var EASYRSA "$PWD/corp" set_var EASYRSA_REQ_COUNTRY "UA" set_var EASYRSA_REQ_PROVINCE "Kiev obl" set_var EASYRSA_REQ_CITY "Kiev" set_var EASYRSA_REQ_ORG "Home LTD" set_var EASYRSA_REQ_EMAIL "rgb000@home.net" set_var EASYRSA_REQ_OU "IT" set_var EASYRSA_CA_EXPIRE 365 set_var EASYRSA_CERT_EXPIRE 365 ...
Все структура ключей будет находиться по пути «$PWD/corp«, куда нужно скопировать папку со всеми x509 типами сертификатов и openssl конфигурационный файл.
root@vpn-server:~/EasyRSA-3.0.1# mkdir corp root@vpn-server:~/EasyRSA-3.0.1# cp openssl-1.0.cnf corp/ root@vpn-server:~/EasyRSA-3.0.1# cp -R x509-types corp/
Далее нужно инициализировать PKI исходя из введенных данных для последующей генерации сертификатов.
root@vpn-server:~/EasyRSA-3.0.1# ./easyrsa init-pki Note: using Easy-RSA configuration from: ./vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/vagrant/EasyRSA-3.0.1/corp/pki
3.2 Создание рутового CA сертификата
Генерируем CA.
root@vpn-server:~/EasyRSA-3.0.1# ./easyrsa build-ca Note: using Easy-RSA configuration from: ./vars Generating a 2048 bit RSA private key ............+++ .........................................................................................................................................................................................................................................................................................+++ writing new private key to '/home/vagrant/EasyRSA-3.0.1/corp/pki/private/ca.key.GAqMwqkPm1' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:HomeVPN CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/vagrant/EasyRSA-3.0.1/corp/pki/ca.crt Вам нужно было ввести пароль на ca.key и CN (имя корпорации). После чего у нас появиться <strong>ca.crt</strong> и <strong>ca.key</strong>. root@vpn-server:~/EasyRSA-3.0.1# tree corp/ corp/ +-- openssl-1.0.cnf +-- pki ¦ +-- ca.crt ¦ +-- certs_by_serial ¦ +-- index.txt ¦ +-- issued ¦ +-- private ¦ ¦ L-- ca.key ¦ +-- reqs ¦ L-- serial
Проверяем информацию по сертификату
root@vpn-server:~/EasyRSA-3.0.1# openssl x509 -in corp/pki/ca.crt -text -noout Certificate: Data: Version: 3 (0x2) Serial Number: 11059372160999538234 (0x997ac862a738be3a) Signature Algorithm: sha256WithRSAEncryption Issuer: CN=HomeVPN Validity Not Before: Dec 8 20:06:28 2015 GMT Not After : Dec 7 20:06:28 2016 GMT Subject: CN=HomeVPN Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:bc:c6:34:61:63:62:21:b3:01:a6:fc:5d:7d:74: 16:14:97:54:f1:89:09:1d:d4:2f:55:9c:bf:cb:e9: 64:a5:fa:13:73:ff:fa:c5:a6:fb:ba:a5:bc:b5:c7: 2d:b5:5c:10:71:8a:10:c4:1e:9e:4e:d8:f0:f0:4b: 00:62:16:df:88:8d:b7:88:42:83:43:fd:de:93:fd: 66:00:b1:16:6f:81:3d:c3:e6:f5:dc:bd:7b:0d:77: 26:7c:20:5a:e9:d7:ef:f2:cd:71:a6:c8:23:9a:01: 0f:89:74:ef:0f:b5:9b:c4:df:25:17:82:c2:37:0d: db:49:f6:b3:e7:eb:74:74:84:d4:02:05:53:c1:19: f6:bb:92:cb:9f:10:14:30:36:d6:80:74:eb:22:c7: 97:e5:93:2b:98:25:88:51:82:5c:32:18:0c:eb:96: e4:c6:9b:c9:db:bd:5e:24:5b:f2:a1:50:80:01:66: 0f:59:d3:00:8e:ad:a8:b6:4a:a2:50:43:fd:3f:c3: eb:99:37:24:bb:16:90:58:6e:cf:b7:1c:8b:69:72: ff:54:75:63:0a:96:70:81:18:99:12:33:0b:90:a5: 88:d1:2d:8d:b0:d5:59:89:b9:fa:a1:b1:de:54:81: 6e:dc:6e:51:e5:63:15:fd:db:0f:32:d7:b4:3f:24: db:ef Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: C6:B2:05:7A:82:23:BA:8B:E1:57:9A:AD:8B:43:54:A9:14:F9:C8:CE X509v3 Authority Key Identifier: keyid:C6:B2:05:7A:82:23:BA:8B:E1:57:9A:AD:8B:43:54:A9:14:F9:C8:CE DirName:/CN=HomeVPN serial:99:7A:C8:62:A7:38:BE:3A X509v3 Basic Constraints: CA:TRUE X509v3 Key Usage: Certificate Sign, CRL Sign Signature Algorithm: sha256WithRSAEncryption ad:94:63:9d:e9:fd:ae:85:93:fa:e6:37:56:05:6c:92:fc:b1: 75:d9:2c:5c:54:50:5a:0d:76:04:19:ab:b1:cf:2d:e3:2d:fe: a5:c3:ae:71:de:ad:9e:6e:5e:31:e0:d5:ac:d1:0e:95:39:2f: 1e:e9:77:e4:8a:f9:eb:97:64:ae:f2:ad:c7:27:a5:0e:f6:f7: 65:17:3c:f2:02:bd:28:70:e3:51:9b:16:42:fe:29:09:a8:06: d5:b9:d6:d0:eb:84:e6:6d:95:98:0d:ac:e0:98:99:a0:94:8d: cb:99:b4:d6:27:92:46:bb:7e:59:f3:5f:99:93:a0:e4:7c:8a: 71:bf:69:49:30:34:e6:5b:60:fe:d1:cd:b9:8d:c4:be:aa:a0: 0f:fd:98:57:0b:25:0d:6d:1e:b4:47:bf:b4:8b:cd:72:df:22: ac:e4:4e:22:fc:88:c5:58:8d:4a:38:e6:cf:59:b9:4d:ce:3c: 02:4d:f8:fe:bb:6c:a4:0f:3f:e6:32:31:88:f8:88:9f:d7:a2: c4:3a:7f:ff:4a:40:14:b2:14:b3:96:55:08:8d:3b:9b:f6:85: 06:66:82:5f:1a:d1:06:c7:7b:4b:fa:50:92:74:7b:a0:77:ef: 48:51:b7:d6:0f:e3:d0:e5:aa:43:37:70:61:96:3c:95:fc:83: f5:50:d1:81
Теперь можно подписывать клиентские сертификаты, но перед этим нужно создать CRL для отзывов сертификатов.
root@vpn-server:~/EasyRSA-3.0.1# ./easyrsa gen-crl Note: using Easy-RSA configuration from: ./vars Using configuration from /home/vagrant/EasyRSA-3.0.1/corp/openssl-1.0.cnf Enter pass phrase for /home/vagrant/EasyRSA-3.0.1/corp/pki/private/ca.key: An updated CRL has been created. CRL file: /home/vagrant/EasyRSA-3.0.1/corp/pki/crl.pem
Проверяем список отозванных сертификатов.
root@vpn-server:~/EasyRSA-3.0.1# openssl crl -noout -text -in corp/pki/crl.pem Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: /CN=HomeVPN Last Update: Dec 8 20:13:47 2015 GMT Next Update: Jun 5 20:13:47 2016 GMT CRL extensions: X509v3 Authority Key Identifier: keyid:C6:B2:05:7A:82:23:BA:8B:E1:57:9A:AD:8B:43:54:A9:14:F9:C8:CE DirName:/CN=HomeVPN serial:99:7A:C8:62:A7:38:BE:3A No Revoked Certificates. Signature Algorithm: sha256WithRSAEncryption b3:c4:ff:52:14:f4:43:ba:c1:57:d4:e2:33:6c:8b:8d:9f:04: 8c:33:5a:d2:7f:5d:5a:39:00:55:1e:2a:01:89:36:d6:74:53: ca:72:92:cf:48:e6:74:5c:65:4d:aa:09:8e:56:55:25:e0:d3: bc:da:f2:e6:2a:e7:9e:fc:6c:78:76:6a:24:ea:bc:a9:d4:e4: b8:b9:47:c2:b3:38:af:e7:88:9b:ea:0a:b9:7e:41:ca:aa:b3: 24:cd:c1:23:31:56:33:43:39:f9:a5:85:cd:6b:9a:0d:32:92: 2b:3f:66:c0:b8:3d:ae:1b:63:0b:a5:c0:f1:00:0b:06:56:eb: 42:f5:88:8e:4e:9a:2f:0f:ef:fe:d8:38:36:b6:16:46:07:8e: 5e:96:66:35:44:22:9d:bb:db:4f:f8:5b:a8:a6:1b:ad:d6:05: ff:ed:81:77:67:f5:2d:e7:76:3a:56:b6:f7:e0:0d:63:bf:7f: 68:b9:c9:89:8f:b0:4a:74:40:6d:88:db:e8:aa:1e:66:59:fe: 2a:b0:8c:29:a0:9f:91:8b:c2:74:e5:c4:be:4c:4c:af:14:69: d3:eb:66:e7:37:6d:95:f1:84:c1:0d:aa:18:14:01:ca:cd:ae: d0:ac:99:a0:24:66:d2:99:a7:8b:de:8a:ef:a2:08:27:71:aa: ce:bf:6a:79
Как видим, мы еще не отозвали никаких сертификатов.
3.3 Создание серверного OpenVPN сертификата
Создаем серверный ключ подписанный CA ключем.
root@vpn-server:~/EasyRSA-3.0.1# ./easyrsa build-server-full vpn-server Note: using Easy-RSA configuration from: ./vars Generating a 2048 bit RSA private key ....................+++ .....................................................+++ writing new private key to '/home/vagrant/EasyRSA-3.0.1/corp/pki/private/vpn-server.key.kUTa5xWSLG' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- Using configuration from /home/vagrant/EasyRSA-3.0.1/corp/openssl-1.0.cnf Enter pass phrase for /home/vagrant/EasyRSA-3.0.1/corp/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :PRINTABLE:'vpn-server' Certificate is to be certified until Dec 7 20:22:40 2016 GMT (365 days) Write out database with 1 new entries Data Base Updated
Смотрим информацию о ключе.
root@vpn-server:~/EasyRSA-3.0.1# openssl x509 -noout -text -in corp/pki/issued/vpn-server.crt Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: CN=HomeVPN Validity Not Before: Dec 8 20:22:40 2015 GMT Not After : Dec 7 20:22:40 2016 GMT Subject: CN=vpn-server Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:9b:03:e3:be:f2:46:35:d8:97:3c:a0:02:18:02: f7:69:35:0c:2f:8f:ad:83:ff:39:7d:d9:89:8a:06: 77:be:18:f4:f5:1a:84:87:cd:c8:c4:d1:5a:63:24: 49:45:70:b6:d0:ae:b5:d3:20:03:f8:1e:15:ec:65: 3c:35:07:d0:0a:86:13:cb:72:1c:de:67:08:8d:11: f9:6f:95:cf:4d:e6:10:f3:2f:22:55:f4:b9:fb:17: e6:64:e7:e0:91:ed:3d:dd:51:85:40:a0:5d:03:71: bf:56:82:01:b7:74:ee:a4:4e:eb:33:e5:73:4d:b7: 65:c5:55:de:12:5f:da:31:b6:a0:c7:99:59:87:92: 11:cc:50:67:e3:23:74:8c:34:89:3d:f6:48:22:5e: 6c:34:06:28:74:5b:c8:01:0a:bc:e0:5d:9a:b2:cf: ec:49:43:74:0d:65:f7:0f:75:ff:f3:75:c8:9f:28: 8f:d1:5f:d8:c8:dd:fd:0c:fc:76:25:78:9c:59:3e: e8:fc:41:4d:32:66:b2:ea:54:96:f9:13:39:e7:c6: a0:ba:a4:16:36:b9:49:42:04:58:a4:30:eb:30:5b: af:03:24:7a:69:13:6d:ab:ad:40:a1:c6:98:03:e3: bc:bf:0c:26:89:65:4f:25:73:9c:f4:99:e2:56:af: e6:83 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Subject Key Identifier: EC:92:76:EB:EA:28:0A:39:FD:DD:C4:9F:4F:D3:49:6F:1A:B7:69:31 X509v3 Authority Key Identifier: keyid:C6:B2:05:7A:82:23:BA:8B:E1:57:9A:AD:8B:43:54:A9:14:F9:C8:CE DirName:/CN=HomeVPN serial:99:7A:C8:62:A7:38:BE:3A X509v3 Extended Key Usage: TLS Web Server Authentication X509v3 Key Usage: Digital Signature, Key Encipherment Signature Algorithm: sha256WithRSAEncryption 8d:25:33:42:3c:5d:32:5d:8d:c2:29:21:d1:1e:c8:14:b3:57: 62:89:f7:05:67:d7:5e:9b:de:33:18:a8:a4:55:d0:11:3b:83: 37:8b:f1:31:ad:91:67:f5:c6:30:68:df:6c:ba:80:5a:86:77: ed:7c:c7:21:72:a5:66:b5:f6:e3:25:3a:fb:6a:73:05:68:09: 6b:3b:ea:66:93:41:6f:6a:30:48:21:e1:d3:9d:87:0e:07:5c: 16:5a:b5:e5:00:d9:ce:be:d4:95:0f:2b:3c:23:d0:8c:97:d0: a5:94:c8:25:40:ad:45:ff:e5:1c:32:8e:b8:28:8b:bc:21:bf: 4d:33:5a:85:cb:8f:42:d2:fa:5b:58:41:e3:15:fb:57:c4:bf: 02:76:b7:06:07:41:e6:4f:cb:e4:e0:e9:4d:aa:29:73:ed:bd: 7e:55:00:b4:88:aa:90:6b:0a:67:11:07:d5:eb:f8:e5:61:13: 96:57:84:00:fe:e9:76:16:a5:b1:9f:d6:9c:40:43:58:9b:68: 49:d7:95:89:eb:1e:9b:a3:ff:02:e9:57:ff:43:1e:36:2f:c6: 8f:c6:e3:14:5d:45:3b:8b:68:9b:24:f5:f8:0a:11:e4:a4:e3: c0:d0:4e:95:ba:04:5c:f3:48:2a:b2:e4:21:d2:33:e3:ed:d7: 09:1e:73:d6
Теперь у нас есть ключ и сертификат для OpenVPN сервера: vpn-server.crt и vpn-server.key.
3.4 Создание клиентских OpenVPN сертификатов
У каждого клиентского сертификата есть Common Name(CN), которое используются OpenVPN для применения дополнительных клиентских настроек (CCD). Создаем первый клиентский ключ.
root@vpn-server:~/EasyRSA-3.0.1# ./easyrsa build-client-full alex-it Note: using Easy-RSA configuration from: ./vars Generating a 2048 bit RSA private key ..........................+++ ..........................................+++ writing new private key to '/home/vagrant/EasyRSA-3.0.1/corp/pki/private/alex-it.key.KUeL3Zi4ix' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- Using configuration from /home/vagrant/EasyRSA-3.0.1/corp/openssl-1.0.cnf Enter pass phrase for /home/vagrant/EasyRSA-3.0.1/corp/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :PRINTABLE:'alex-it' Certificate is to be certified until Dec 7 20:38:17 2016 GMT (365 days) Write out database with 1 new entries Data Base Updated
Проверяем сертификат.
root@vpn-server:~/EasyRSA-3.0.1# openssl x509 -noout -text -in corp/pki/issued/alex-it.crt Certificate: Data: Version: 3 (0x2) Serial Number: 2 (0x2) Signature Algorithm: sha256WithRSAEncryption Issuer: CN=HomeVPN Validity Not Before: Dec 8 20:38:17 2015 GMT Not After : Dec 7 20:38:17 2016 GMT Subject: CN=alex-it Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:94:21:b9:b6:69:0c:fd:b6:8c:69:ee:de:e2:82: 74:31:b5:86:c4:4f:3f:94:cb:c0:d2:a6:aa:0e:73: 44:37:5f:d6:0b:04:0d:65:92:e4:4a:7b:66:b6:09: 44:c2:c9:9a:63:83:46:77:cf:e5:e3:ee:dd:1f:e4: 22:95:7b:50:b0:2c:45:65:9a:2d:c3:8e:de:60:65: 1d:1f:e8:f7:d8:26:19:bb:3a:08:5e:51:15:71:bf: 69:5c:55:7d:91:33:a3:ec:c9:58:d6:3f:77:8e:d5: 69:56:61:d9:6a:c3:fe:19:ce:ef:ea:eb:0c:18:97: e6:89:fa:67:d1:c9:56:04:c5:af:8d:31:5e:38:ca: b7:c1:7f:0e:6a:95:4a:67:5a:ee:b2:b1:c9:b5:87: 81:c5:2b:51:9d:58:e5:64:77:f8:ad:6e:2e:50:29: 8f:5c:eb:c7:3f:b5:80:03:28:89:17:8d:49:a5:57: ea:b2:04:01:7a:a7:8c:e8:24:5d:7a:3d:0c:13:f1: 30:4c:a8:70:f9:50:c9:3f:c3:b0:3c:21:93:0f:19: 83:3b:5a:81:e6:72:85:29:0b:6f:00:9e:3b:b5:76: fc:91:18:50:5b:54:6e:ea:58:ef:48:d0:5c:b2:be: 03:b7:34:e7:7d:dc:f3:f5:05:0b:9b:bf:54:1e:53: 09:31 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Subject Key Identifier: 9D:75:CA:19:19:B8:91:BF:C6:4F:9E:72:B8:45:AF:06:7B:52:1E:6B X509v3 Authority Key Identifier: keyid:C6:B2:05:7A:82:23:BA:8B:E1:57:9A:AD:8B:43:54:A9:14:F9:C8:CE DirName:/CN=HomeVPN serial:99:7A:C8:62:A7:38:BE:3A X509v3 Extended Key Usage: TLS Web Client Authentication X509v3 Key Usage: Digital Signature Signature Algorithm: sha256WithRSAEncryption 65:40:85:80:0a:15:92:a8:f1:69:1d:d1:f7:4d:8a:17:32:9f: c1:64:6a:a2:c4:be:df:99:5a:a9:22:af:ea:c0:45:7a:c4:46: f1:87:99:e3:54:29:55:2c:6a:75:13:77:c8:a5:39:58:04:f3: c5:82:ee:b0:22:a3:df:20:45:9b:f2:32:ea:6a:71:61:98:68: 19:00:6d:5b:44:b5:2d:f5:13:78:53:f5:64:45:9b:a2:2d:69: 4f:8e:31:ea:df:be:32:c3:9e:e9:73:f7:2d:56:e5:94:8a:a9: d9:07:65:3c:4f:07:8a:8a:ba:a5:a7:75:12:78:cf:cd:ed:a1: 2b:f4:0b:ab:30:db:0b:87:55:ea:47:9b:76:04:82:8e:52:bb: 31:6b:d3:ac:76:56:6b:07:b8:fe:2e:11:21:03:83:ed:6d:71: e7:9a:d1:9a:88:28:18:1c:6a:40:b8:24:b4:29:45:fd:4d:05: c9:e2:d7:9f:c4:b7:b9:2b:74:cd:eb:ff:68:9a:c2:e6:6e:1c: 13:75:d1:45:f0:7c:34:67:88:1a:34:32:92:ec:6f:b2:86:f3: 16:8c:1f:16:29:7c:54:85:1d:38:7d:b6:4f:bf:40:ef:ae:80: 1d:0b:fc:32:b2:d6:54:58:69:10:32:b6:b9:6e:5f:37:41:63: e3:f7:c1:15
Теперь создадим еще два клиентских ключа.
root@vpn-server:~/EasyRSA-3.0.1# ./easyrsa build-client-full frodo-qa Note: using Easy-RSA configuration from: ./vars Generating a 2048 bit RSA private key .................................+++ ...........+++ writing new private key to '/home/vagrant/EasyRSA-3.0.1/corp/pki/private/frodo-qa.key.NsZyRkVitE' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- Using configuration from /home/vagrant/EasyRSA-3.0.1/corp/openssl-1.0.cnf Enter pass phrase for /home/vagrant/EasyRSA-3.0.1/corp/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :PRINTABLE:'frodo-qa' Certificate is to be certified until Dec 7 20:43:55 2016 GMT (365 days) Write out database with 1 new entries Data Base Updated root@vpn-server:~/EasyRSA-3.0.1# ./easyrsa build-client-full jack-hr Note: using Easy-RSA configuration from: ./vars Generating a 2048 bit RSA private key ...........................................+++ .........+++ writing new private key to '/home/vagrant/EasyRSA-3.0.1/corp/pki/private/jack-hr.key.cKHMJvrjq8' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- Using configuration from /home/vagrant/EasyRSA-3.0.1/corp/openssl-1.0.cnf Enter pass phrase for /home/vagrant/EasyRSA-3.0.1/corp/pki/private/ca.key: Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :PRINTABLE:'jack-hr' Certificate is to be certified until Dec 7 20:45:20 2016 GMT (365 days) Write out database with 1 new entries Data Base Updated
Мы создали ключи и сертификаты для CA, OpenVPN сервера и клиентов.
root@vpn-server:~/EasyRSA-3.0.1# tree corp/ corp/ +-- openssl-1.0.cnf +-- pki ¦ +-- ca.crt ¦ +-- certs_by_serial ¦ ¦ +-- 01.pem ¦ ¦ +-- 02.pem ¦ ¦ +-- 03.pem ¦ ¦ L-- 04.pem ¦ +-- crl.pem ¦ +-- index.txt ¦ +-- index.txt.attr ¦ +-- index.txt.attr.old ¦ +-- index.txt.old ¦ +-- issued ¦ ¦ +-- alex-it.crt ¦ ¦ +-- frodo-qa.crt ¦ ¦ +-- jack-hr.crt ¦ ¦ L-- vpn-server.crt ¦ +-- private ¦ ¦ +-- alex-it.key ¦ ¦ +-- ca.key ¦ ¦ +-- frodo-qa.key ¦ ¦ +-- jack-hr.key ¦ ¦ L-- vpn-server.key ¦ +-- reqs ¦ ¦ +-- alex-it.req ¦ ¦ +-- frodo-qa.req ¦ ¦ +-- jack-hr.req ¦ ¦ L-- vpn-server.req ¦ +-- serial ¦ L-- serial.old L-- x509-types +-- ca +-- client +-- COMMON L-- server 6 directories, 30 files
3.5 Список отозванных сертификатов
Если кто-то потерял свой секретный ключ или сертификат, или же он был скомпрометирован – эго нужно отозвать. Это можно легко сделать используя easy-RSA.
root@vpn-server:~/EasyRSA-3.0.1# ./easyrsa revoke alex-it root@vpn-server:~/EasyRSA-3.0.1# ./easyrsa gen-crl
После этих действий у нас обновиться CRL файл, который нужно прописать в OpenVPN конфигурации сервера (директива crl-verify).
root@vpn-server:~/EasyRSA-3.0.1# cp corp/pki/crl.pem /etc/openvpn/certs/crl.pem
Теперь смотрим какие у нас есть отозванные сертификаты.
root@vpn-server:~/EasyRSA-3.0.1# openssl crl -noout -text -in /etc/openvpn/certs/crl.pem Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: /CN=Home OpenVPN Last Update: Dec 7 19:40:27 2015 GMT Next Update: Jun 4 19:40:27 2016 GMT CRL extensions: X509v3 Authority Key Identifier: keyid:6A:48:F5:4D:9A:3E:BC:B6:F9:BD:64:BA:0F:4A:2B:44:F8:66:09:7E DirName:/CN=Home OpenVPN serial:CC:24:2B:C0:05:BB:66:06 Revoked Certificates: Serial Number: 02 Revocation Date: Dec 7 19:21:10 2015 GMT Signature Algorithm: sha256WithRSAEncryption 00:ea:48:05:4a:23:8f:4d:60:06:fe:02:d5:f4:90:75:e0:54: e9:74:cf:2d:a0:0e:4d:d9:82:2f:24:41:a2:9a:c8:ea:e1:f2: 37:eb:2d:9a:fb:1b:b5:e9:23:40:47:34:17:86:d3:21:26:1e: 59:c8:d2:5c:fc:59:62:a5:76:78:f0:b2:36:cf:0d:9a:8d:54: 0e:69:d2:37:27:64:64:4e:e5:5c:f1:e2:0d:78:95:da:29:15: df:23:19:a0:46:b5:4e:d1:f4:07:79:bf:6d:c3:0f:f1:cf:b4: b9:ec:72:8e:d7:9b:cc:6f:6b:05:ad:51:94:1d:82:e1:1a:3c: 65:35:39:f8:41:45:29:2f:85:f3:ff:8f:c3:02:7a:9d:0c:55: a6:e6:45:ad:e4:df:4d:53:c1:b7:9b:5b:33:65:81:2b:40:ae: fd:5e:ee:e4:7c:d5:ca:11:6d:1f:1c:e6:83:f0:ca:b9:1c:c4: b5:5b:ff:d2:84:de:e1:a1:aa:65:77:5b:18:fb:12:54:fb:af: 15:92:e0:0d:5b:5d:d4:7c:6b:a6:5d:38:71:38:25:68:2e:a0: c5:65:f1:bb:17:b4:c2:e0:3b:00:f2:4e:48:30:1f:ae:4d:e2: 49:4d:48:56:1d:86:f2:28:50:94:ef:37:31:64:94:cf:10:05: d4:3c:45:ea
Как видим, мы отозвали сертификат с Serial Number: 02, т.е. alex-it. Serial Number было видно, когда мы смотрели информацию по ключам используя openSSL. Вот и все.
Спасибо за отличную статью.
Теперь понятна последовательность действий и можно двигаться дальше.