Spec-Zone.ru › Chef 16

x509_certificate ресурс

[править на GitHub]

Используйте x509_certificate ресурс аудита Chef InSpec для проверки полей и валидности сертификата x.509.

Сертификаты X.509 используют пары открытый/закрытый ключ для подписи и шифрования документов или коммуникаций по сети. Они также могут использоваться для аутентификации.

Примеры включают сертификаты SSL, сертификаты S/MIME и сертификаты аутентификации VPN.

Доступность

Установка

Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.

Версия

Этот ресурс стал доступен впервые в версии v1.18.0 InSpec.

Синтаксис

Блок ресурса x509_certificate объявляет сертификат key file для проверки.

describe x509_certificate('mycertificate.pem') do
  its('validity_in_days') { should be > 30 }
end

Также можно использовать свойство filepath.

describe x509_certificate(filepath: 'mycertificate.pem') do
  its('validity_in_days') { should be > 30 }
end

Ресурс также поддерживает передачу содержимого сертификата.

cert_content = file('certificate.pem').content

describe x509_certificate(content: cert_content) do
  its('validity_in_days') { should be > 30 }
end

Если заданы как content, так и filepath, используется значение, переданное в content.

Свойства

subject.XX

Свойство subject облегчает доступ к отдельным элементам субъекта.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('subject.CN') { should eq "www.mywebsite.com" }
end

subject_dn (Строка)

Свойство subject_dn возвращает строку с отличительным именем поля субъекта. Она содержит несколько полей, разделенных слешами. Идентификаторы полей — те же, которые используются OpenSSL для генерации CSR и сертификатов. Используйте subject.XX для доступа к обработанной версии.

Например: /C=US/L=Seattle/O=Chef Software Inc/OU=Chefs/CN=Richard Nixon

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('subject_dn') { should match "CN=www.mywebsite.com" }
end

issuer.XX

issuer облегчает доступ к отдельным элементам эмитента.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('issuer.CN') { should eq "Acme Trust CA" }
end

issuer_dn (Строка)

Свойство issuer_dn — это отличительное имя от CA (центра сертификации) во время процесса подписи сертификата. Оно описывает, какой орган гарантирует идентичность нашего сертификата.

Например: /C=US/L=Seattle/CN=Acme Trust CA/emailAddress=support@acmetrust.org

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('issuer_cn') { should match "CN=Acme Trust CA" }
end

public_key (Строка)

Свойство public_key возвращает открытый ключ в кодировке base64 в формате PEM.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('public_key') { should match "-----BEGIN PUBLIC KEY-----\nblah blah blah..." }
end

key_length (Целое число)

Свойство key_length вычисляет количество бит в открытом ключе. Большее количество бит увеличивает безопасность, но за счет скорости и в крайних случаях — совместимости.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('key_length') { should be 2048 }
end

signature_algorithm (Строка)

Свойство signature_algorithm описывает, какая хеш-функция использовалась CA для подписи сертификата.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('signature_algorithm') { should be 'sha256WithRSAEncryption' }
end

validity_in_days (Число с плавающей точкой)

Свойство validity_in_days можно использовать для проверки того, что сертификаты скоро не истекут.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('validity_in_days') { should be > 30 }
end

not_before и not_after (Время)

Свойства not_before и not_after отображают начальную и конечную даты действия сертификата. Они представлены как класс ruby Time, чтобы можно было легко выполнять арифметические операции с датами.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('not_before') { should be <= Time.utc.now }
  its('not_after')  { should be >= Time.utc.now }
end

serial (Целое число)

Свойство serial отображает серийный номер сертификата. Серийный номер устанавливается CA во время процесса подписи и должен быть уникальным в рамках этой CA.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('serial') { should eq 9623283588743302433 }
end

version (Целое число)

Свойство version отображает версию сертификата.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  its('version') { should eq 2 }
end

extensions (Хэш)

Свойство хэш extensions в основном используется для определения целей использования сертификата.

describe x509_certificate('/etc/pki/www.mywebsite.com.pem') do
  # Check what extension categories we have
  its('extensions') { should include 'keyUsage' }
  its('extensions') { should include 'extendedKeyUsage' }
  its('extensions') { should include 'subjectAltName' }

  # Check examples of basic 'keyUsage'
  its('extensions.keyUsage') { should include 'Digital Signature' }
  its('extensions.keyUsage') { should include 'Non Repudiation' }
  its('extensions.keyUsage') { should include 'Data Encipherment' }

  # Check examples of newer 'extendedKeyUsage'
  its('extensions.extendedKeyUsage') { should include 'TLS Web Server Authentication' }
  its('extensions.extendedKeyUsage') { should include 'Code Signing' }

  # Check examples of 'subjectAltName'
  its('extensions.subjectAltName') { should include 'email:support@chef.io' }
end

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/x509_certificate/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API