Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сертификат openSSL 
V
    Опции темы
Cheloveck
Дата 6.4.2010, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Итак, сабж: 
Имеем openssl. Нужно создать самоподписанный сертификат организации и подписанный им сертификат сервера.

С сертификатом организации проблем не возникает. Делаю так:
Код

openssl rand -out random.rnd 2048
openssl genrsa -rand random.rnd -out organization.key -des3
openssl req -new -key organization.key -config organization.cfg -out organization.csr
openssl x509 -req -signkey organization.key -in organization.csr -extfile organization.cfg -out organization.crt -days 365

в organization.cfg следующее:
Код

[ req ]
prompt = no
default_bits = 1024
distinguished_name = req_DN
extensions = v3_req

[ req_DN ]
countryName = RU
stateOrProvinceName = Tula
localityName = city
0.organizationName = MyCA
organizationalUnitName = "Certificate Authority"
commonName = "CA Common name"
emailAddress = [email protected]
[ v3_req ]
subjectAltName   = email:copy
basicConstraints = CA:true
nsComment        = "CA certificate of our organization"
nsCertType       = sslCA


далее нужно создать сертификат сервера и подписать его сертификатом организации. Вот проблемы с последним, программа виснет, а по нажатии ctrl+c выдаёт сообщение
Код

2036:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:698:Expecting: CERTIFICATE REQUEST

Итак, что я делаю
Код

openssl genrsa -rand random.rnd -out server.key
openssl req -new -key server.key -config server.cfg -out server.csr
openssl x509 -req -signkey organization.key -CA organization.crt -extfile server.cfg -out server.crt -days 365

Ну и содержимое server.cfg:
Код

[ req ]
default_bits  = 1024
distinguished_name = req_DN
extensions = v3_req
prompt = no
[ req_DN ]
countryName = RU
stateOrProvinceName = Tula
localityName = city
0.organizationName = MyServer
organizationalUnitName = OSSL_Server
commonName = Server_common
emailAddress = [email protected]
[ v3_req ]
subjectAltName   = email:copy
basicConstraints = CA:FALSE
nsComment        = "Server"
nsCertType       = server


Подскажите, что я делаю не так?

Это сообщение отредактировал(а) Cheloveck - 6.4.2010, 10:20


--------------------
user posted image
PM Jabber   Вверх
Cheloveck
Дата 6.4.2010, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Вобщем я нашёл толковое руководство. Кому интересно - оно здесь.


--------------------
user posted image
PM Jabber   Вверх
Cheloveck
Дата 7.4.2010, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Я переписал скрипт приведённый по ссылке в предыдущем посте на JScript (для запуска под M$ Windows). Выложу для тут, чтобы другие не мучались
Код

function Run()
{
    //
    // argument line handling
    //
    var stdout = WScript.StdOut;
    var args = WScript.Arguments;
    if(args.length != 1)
    {
        stdout.WriteLine("Usage: cscript " + WScript.ScriptName + " file.csr");
        return(1);
    }
    var csr_filename = new String(args(0));
    var crt_filename = new String;
    if(csr_filename.search(".csr$") == -1)
        crt_filename = new String(csr_filename + ".crt");
    else
    {
        var re = /csr$/;
        crt_filename = csr_filename.replace(re, "crt");
    }

    //
    // make sure environment exists
    //
    var fso = WScript.CreateObject("Scripting.FileSystemObject");
    if(!fso.FolderExists("ca.db.certs"))
        fso.CreateFolder("ca.db.certs");
    if(!fso.FileExists("ca.db.serial"))
    {
        var f = fso.OpenTextFile("ca.db.serial", 2, true);
        f.WriteLine("01");
        f.Close();
    }
    if(!fso.FileExists("ca.db.index"))
        fso.CreateTextFile("ca.db.index");
        
    //
    // create an own SSLeay config
    //
    var fconf = fso.OpenTextFile("ca.config", 2, true);
    var dir = "D:/openssl/share";
    fconf.WriteLine("[ ca ]");
    fconf.WriteLine("default_ca = CA_own");
    fconf.WriteLine("[ CA_own ]");
    fconf.WriteLine("dir = " + dir);
    fconf.WriteLine("certs = " + dir + "/certs");
    fconf.WriteLine("new_certs_dir = " + dir + "/ca.db.certs");
    fconf.WriteLine("database = " + dir + "/ca.db.index");
    fconf.WriteLine("serial = " + dir + "/ca.db.serial");
    fconf.WriteLine("RANDFILE = " + dir + "/ca.db.rand");
    fconf.WriteLine("certificate = " + dir + "/certs/ca.crt");
    fconf.WriteLine("private_key = " + dir + "/private/ca.key");
    fconf.WriteLine("default_days = 365");
    fconf.WriteLine("default_crl_days = 30");
    fconf.WriteLine("default_md = md5");
    fconf.WriteLine("preserve = no");
    fconf.WriteLine("policy = policy_anything");
    fconf.WriteLine("[ policy_anything ]");
    fconf.WriteLine("countryName = optional");
    fconf.WriteLine("stateOrProvinceName = optional");
    fconf.WriteLine("localityName = optional");
    fconf.WriteLine("organizationName = optional");
    fconf.WriteLine("organizationalUnitName = optional");
    fconf.WriteLine("commonName = supplied");
    fconf.WriteLine("emailAddress = optional");
    fconf.Close();
    
    //
    // sign the certificate
    //
    var shell = WScript.CreateObject("WScript.Shell");
    stdout.WriteLine("CA signing: " + csr_filename + " -> " + cert_filename + ":");
    shell.Run("openssl ca -config ca.config -out " + crt_filename + " -infiles " + csr_filename, 1, true);
    stdout.WriteLine("CA verifying: " + crt_filename + " <-> CA cert");
    shell.Run("openssl verify -CAfile " + dir + "/certs/ca.crt " + crt_filename, 1, true);
    
    //
    // cleanup after SSLeay
    //
    if(fso.FileExists("ca.config"))
        fso.DeleteFile("ca.config", true);
    if(fso.FileExists("ca.db.serial.old"))
        fso.DeleteFile("ca.db.serial.old", true);
    if(fso.FileExists("ca.db.index.old"))
        fso.DeleteFile("ca.db.index.old", true);
}

Run();



Это сообщение отредактировал(а) Cheloveck - 8.4.2010, 09:02


--------------------
user posted image
PM Jabber   Вверх
Akella
Дата 12.7.2010, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



Цитата(Cheloveck @  6.4.2010,  10:17 Найти цитируемый пост)
Нужно создать самоподписанный сертификат организации и подписанный им сертификат сервера.

что это и для чего?

Это сообщение отредактировал(а) Akella - 12.7.2010, 22:33
PM MAIL   Вверх
Cheloveck
Дата 13.7.2010, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Цитата(Akella @  12.7.2010,  22:31 Найти цитируемый пост)
что это и для чего?

Это для SSL/TLS. Честно говоря, я уже сам толком не помню, надо заново разбираться))

Добавлено через 41 секунду
ps я заюзал GnuTLS без сертификатов вообще.


--------------------
user posted image
PM Jabber   Вверх
Akella
Дата 16.7.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



я имел ввиду, что ты это использовал для передачи\получения данных?
PM MAIL   Вверх
Cheloveck
Дата 16.7.2010, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Цитата(Akella @  16.7.2010,  15:23 Найти цитируемый пост)
я имел ввиду, что ты это использовал для передачи\получения данных? 

Если о данном скрипте, то здесь вообще не идёт речи о передаче, тут только подписывается сертификат. А для передачи я хотел использовать openSSL, но, как уже говорил, заюзал GnuTLS.


--------------------
user posted image
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Технологии защиты программного обеспечения | Следующая тема »


 




[ Время генерации скрипта: 0.1075 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.