Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Нужен скрипт: прочесть и вывести одну строку из OpenSSL CSR  (Прочитано 610 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Есть, например, такая CSR'ка: https://ca.rootdir.org/www.example.com.csr
(Нажмите, чтобы показать/скрыть)

Мне нужен скрипт, который бы прочитал её и вывел на STDOUT одну строку - X509v3 Subject Alternative Name (subjectAltName).
Лучше на чём-то распространённом, типа Perl (Crypt::OpenSSL). НЕ компилируемый код (условия использования таковы, что компилить под все мыслимые платформы нереально).
Для мастеров sed и awk - я и сам могу распарсить дамп openssl, но это решение не подходит. Нужно именно решение через OpenSSL.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Как насчет Ruby?

Код: (Ruby) [Выделить]
#!/usr/bin/env ruby
 
require 'openssl'
require 'pathname'
 
if ARGV.length < 1
        raise Exception('req file is not specified')
end
 
req = OpenSSL::X509::Request.new(
        File.read(Pathname.new(ARGV[0]).realpath.to_s)
)
 
req.attributes.each do |x|
  x.value.each do |y|
    seq = y.value.find do |z|
      z.value[0].value == 'subjectAltName'
    end
    if seq
      subj = seq.value[1].value
      dec = OpenSSL::ASN1.decode(subj)
      res = []
      dec.value.each do |n|
        if res.length == 0
          res.push('email:' + n.value)
        else
          res.push('DNS:' + n.value)
        end
      end
      puts res.join(', ')
    end
  end
end
« Последнее редактирование: 09 Ноября 2014, 05:36:03 от .ubuntufan »

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Да хоть яваскрипт. Для тестов сойдёт.
Вот только мне нужна конкретно строчка email:entity@example.com, DNS:server, DNS:www.example.com, а не столбик значений. Но убейте меня, если я понимаю, почему этот скрипт вообще работает. Кто вообще выдумал этот язык?… Перл - и тот понятнее.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Цитировать
Но убейте меня, если я понимаю, почему этот скрипт вообще работает. Кто вообще выдумал этот язык?… Перл - и тот понятнее.

лол

скрипт поправил

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Спасибо.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.056 секунд. Запросов: 25.