OpenVPN. Генерация PKI сертификатов

easy-rsaКак настраивать OpenVPN сервер в режиме point-to-point и client/server мы научились в предыдущих статьях. Для point-to-point режима мы использовали shared key. В режиме client/server нам были нужны сертификаты и ключи для OpenVPN сервера и клиентов. В данной статье пойдет речь о генерации инфраструктуры публичных ключей (PKI) и сертификатов используя Easy-RSA утилиту.

3. PKI схема

Немного расскажу о PKI структуре (рисунок 3.1).

pki1
Рисунок 3.1 – Структура PKI

Во главе всего дерева сертификатов и ключей должен быть корневой центр сертификации (CA). К примеру, можно посмотреть в браузере информацию о цепочке SSL сертификатов googl-a.

pki2

Рисунок 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. Вот и все.

Автор: admin, 17 января 2016
Рубрики: Безопасность
Метки:
Один комментарий к сообщению: “OpenVPN. Генерация PKI сертификатов”
  1. Иван:

    Спасибо за отличную статью.
    Теперь понятна последовательность действий и можно двигаться дальше.

Написать комментарий

Последние статьи

Яндекс.Метрика
?>