x509_certificate ресурс
Используйте 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/