Spec-Zone.ru › Chef 17

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