Esta página se genera a partir de Código fuente de Chef.Para sugerir un cambio, edite el openssl_x509_certificate.rb archivar y enviar una solicitud de extracción al Repositorio de chef.

Página de referencia de recursos


Utilizar el openssl_x509_certificate recurso para generar certificados x509 con formato PEM, firmados o autofirmados. Si no existe key se especifica, el recurso generará automáticamente una contraseña sin contraseña key con el certificado. Si una CA privada key y se proporcionan el certificado, el certificado se firmará con ellos.

Nota

Este recurso se renombró de openssl_x509 a openssl_x509_certificate. El nombre heredado seguirá funcionando, pero el código del libro de recetas debe actualizarse para el nuevo nombre del recurso.

Nuevo en Chef Infra Client 14.4.

Sintaxis


La sintaxis completa de todas las propiedades que están disponibles para el openssl_x509_certificate recurso es:

openssl_x509_certificate 'name'do
  ca_cert_file             String
  ca_key_file              String
  ca_key_pass              String
  city                     String
  common_name              String
  country                  String
  csr_file                 String
  email                    String
  expire                   Integer# default value: 365
  extensions               Hash
  group                    String,Integer
  key_curve                String# default value: "prime256v1"
  key_file                 String
  key_length               Integer# default value: 2048
  key_pass                 String
  key_type                 String# default value: "rsa"
  mode                     Integer,String
  org                      String
  org_unit                 String
  owner                    String,Integer
  path                     String# default value: 'name' unless specified
  renew_before_expiry      Integer
  state                    String
  subject_alt_name         Array
  action                   Symbol# defaults to :create if not specifiedend

dónde:

  • openssl_x509_certificate es el recurso.
  • name es el nombre que se le da al bloque de recursos.
  • action identifica qué pasos tomará Chef Infra Client para llevar el nodo al estado deseado.
  • ca_cert_file, ca_key_file, ca_key_pass, city, common_name, country, csr_file, email, expire, extensions, group, key_curve, key_file, key_length, key_pass, key_type, mode, org, org_unit, owner, path, renew_before_expiry, state, y subject_alt_name son las propiedades disponibles para este recurso.

Comportamiento


los openssl_x509_certificate recurso tiene las siguientes acciones:

:create
Defecto. Cree el archivo de certificado.
:nothing
Este bloque de recursos no actúa a menos que otro recurso lo notifique para que actúe. Una vez notificado, este bloque de recursos se ejecuta inmediatamente o se pone en cola para ejecutarse al final de una ejecución de Chef Infra Client.

Propiedades


los openssl_x509_certificate recurso tiene las siguientes propiedades:

ca_cert_file
Tipo de rubí: Cuerda

La ruta al certificado CA X509 en el sistema de archivos. Si el ca_cert_file se especifica la propiedad, la ca_key_file También se debe especificar la propiedad, el certificado se firmará con ellos.

ca_key_file
Tipo de rubí: Cuerda

La ruta a la CA privada key en el sistema de archivos. Si el ca_key_file se especifica la propiedad, la ca_cert_file También se debe especificar la propiedad, el certificado se firmará con ellos.

ca_key_pass
Tipo de rubí: Cuerda

La frase de contraseña para CA private keyfrase de contraseña.

city
Tipo de rubí: Cuerda

Valor para el L campo de certificado.

common_name
Tipo de rubí: Cuerda

Valor para el CN campo de certificado.

country
Tipo de rubí: Cuerda

Valor para el C campo de certificado.

csr_file
Tipo de rubí: Cuerda

La ruta a una solicitud de certificado X509 (CSR) en el sistema de archivos. Si el csr_file se especifica la propiedad, el recurso intentará obtener un CSR desde esta ubicación. Si no se encuentra ningún archivo CSR, el recurso generará un certificado autofirmado y se deben especificar los campos del certificado (common_name al final).

email
Tipo de rubí: Cuerda

Valor para el email campo de certificado.

expire
Tipo de rubí: Entero | Valor por defecto:365

Valor que representa el número de días a partir de ahora a través de los cuales el certificado emitido seguirá siendo válido. El certificado caducará después de este período.

extensions
Tipo de rubí: Picadillo

Hash de las entradas de extensiones X509, en formato 'keyUsage' => 'values' => %w( keyEncipherment digitalSignature), 'critical' => true .

group
Tipo de rubí: Cadena, entero

La propiedad del grupo aplicada a todos los archivos creados por el recurso.

key_curve
Tipo de rubí: Cadena | Valor por defecto:prime256v1Valores permitidos:"prime256v1", "secp384r1", "secp521r1"

La curva deseada de la generada key (si key_type es igual a ‘ec’). Correr openssl ecparam -list_curves para ver las opciones disponibles.

key_file
Tipo de rubí: Cuerda

La ruta a un certificado key archivo en el sistema de archivos. Si se especifica la propiedad key_file, el recurso intentará obtener un key desde esta ubicación. Si no key se encuentra el archivo, el recurso generará un nuevo key archivo en esta ubicación. Si no se especifica la propiedad key_file, el recurso generará una key archivo en el mismo directorio que el certificado generado, con el mismo nombre que el certificado generado.

key_length
Tipo de rubí: Entero | Valor por defecto:2048Valores permitidos:1024, 2048, 4096, 8192

La longitud de bits deseada de la generada key (si key_type es igual a ‘rsa’).

key_pass
Tipo de rubí: Cuerda

La frase de contraseña de un keyfrase de contraseña.

key_type
Tipo de rubí: Cadena | Valor por defecto:rsaValores permitidos:"ec", "rsa"

El tipo deseado de generado key.

mode
Tipo de rubí: Entero, Cadena

El modo de permiso aplicado a todos los archivos creados por el recurso.

org
Tipo de rubí: Cuerda

Valor para el O campo de certificado.

org_unit
Tipo de rubí: Cuerda

Valor para el OU campo de certificado.

owner
Tipo de rubí: Cadena, entero

El propietario aplicó a todos los archivos creados por el recurso.

path
Tipo de rubí: Cadena | Valor por defecto:The resource block's name

Una propiedad opcional para especificar la ruta en la que escribir el archivo si difiere del nombre del bloque de recursos.

renew_before_expiry
Tipo de rubí: Entero

El número de días antes del vencimiento. El certificado se renovará automáticamente cuando se alcance el valor.

Nuevo en Chef Infra Client 15.7

state
Tipo de rubí: Cuerda

Valor para el ST campo de certificado.

subject_alt_name
Tipo de rubí: Formación

Matriz de entradas de nombres alternativos del sujeto, en formato DNS:example.com o IP:1.2.3.4.

Funcionalidad de recurso común


Los recursos de Chef incluyen propiedades comunes, notificaciones y protecciones de recursos.

Propiedades Comunes

Las siguientes propiedades son comunes a todos los recursos:

compile_time

Tipo de rubí: true, false | Valor por defecto:false

Controle la fase durante la cual se ejecuta el recurso en el nodo. Ajustado a true ejecutar mientras se construye la colección de recursos (el compile phase). Ajustado a false para ejecutarse mientras Chef Infra Client está configurando el nodo (el converge phase).

ignore_failure

Tipo de rubí: true, false,: tranquilo | Valor por defecto:false

Continúe ejecutando una receta si un recurso falla por cualquier motivo. :quiet no mostrará el seguimiento de la pila completa y la receta continuará ejecutándose si falla un recurso.

retries

Tipo de rubí: Entero | Valor por defecto:0

El número de intentos para detectar excepciones y reintentar el recurso.

retry_delay

Tipo de rubí: Entero | Valor por defecto:2

La demora de reintento (en segundos).

sensitive

Tipo de rubí: true, false | Valor por defecto:false

Asegúrese de que Chef InfraClient no registre datos de recursos confidenciales.

Notificaciones

notifies

Tipo de rubí: Símbolo, ‘Chef :: Recurso[String]’

Un recurso puede notificar a otro recurso para que actúe cuando cambia su estado. Especifique un 'resource[name]', los :action ese recurso debe tomar, y luego el :timer para esa acción. Un recurso puede notificar a más de un recurso; utilizar una notifies declaración para cada recurso a ser notificado.

Si el recurso referenciado no existe, se genera un error. A diferencia de, subscribes no fallará si no se encuentra el recurso de origen.

Un temporizador especifica el punto durante la ejecución de Chef Infra Client en el que se ejecuta una notificación. Están disponibles los siguientes temporizadores:

:before

Especifica que la acción sobre un recurso notificado debe ejecutarse antes de procesar el bloque de recursos en el que se encuentra la notificación.

:delayed

Defecto. Especifica que una notificación debe ponerse en cola y luego ejecutarse al final de una ejecución de Chef Infra Client.

:immediate, :immediately

Especifica que se debe ejecutar una notificación inmediatamente, por recurso notificado.

La sintaxis de notifies es:

notifies :action,'resource[name]',:timer
subscribes

Tipo de rubí: Símbolo, ‘Chef :: Recurso[String]’

Un recurso puede escuchar a otro recurso y luego tomar medidas si cambia el estado del recurso que se está escuchando. Especifique un 'resource[name]', los :action ser tomado, y luego el :timer para esa acción.

Tenga en cuenta que subscribes no aplica la acción especificada al recurso que escucha, por ejemplo:

file '/etc/nginx/ssl/example.crt'do
  mode '0600'
  owner 'root'end

service 'nginx'do
  subscribes :reload,'file[/etc/nginx/ssl/example.crt]',:immediatelyend

En este caso el subscribes propiedad recarga el nginx servicio siempre que su archivo de certificado, ubicado bajo /etc/nginx/ssl/example.crt, se actualiza. subscribes no realiza ningún cambio en el archivo de certificado en sí, simplemente escucha un cambio en el archivo y ejecuta el :reload acción para su recurso (en este ejemplo nginx) cuando se detecta un cambio.

Si el otro recurso no existe, la suscripción no generará un error. Contraste esto con la semántica más estricta de notifies, que generará un error si el otro recurso no existe.

Un temporizador especifica el punto durante la ejecución de Chef Infra Client en el que se ejecuta una notificación. Están disponibles los siguientes temporizadores:

:before

Especifica que la acción sobre un recurso notificado debe ejecutarse antes de procesar el bloque de recursos en el que se encuentra la notificación.

:delayed

Defecto. Especifica que una notificación debe ponerse en cola y luego ejecutarse al final de una ejecución de Chef Infra Client.

:immediate, :immediately

Especifica que se debe ejecutar una notificación de inmediato, por recurso notificado.

La sintaxis de subscribes es:

subscribes :action,'resource[name]',:timer

Guardias

Se puede utilizar una propiedad de protección para evaluar el estado de un nodo durante la fase de ejecución de una ejecución de Chef Infra Client. Sobre la base de los resultados de esta evaluación, se utiliza una propiedad de protección para decirle a Chef Infra Client si debe continuar ejecutando un recurso. Una propiedad de guardia acepta una string value o un valor de bloque Ruby:

  • A string se ejecuta como un comando de shell. Si el comando regresa 0, se aplica la guardia. Si el comando devuelve cualquier otro valor, la propiedad guard no se aplica. Guardias de cuerdas en un powershell_script ejecutar comandos de Windows PowerShell y puede volver true además de 0.
  • Un bloque se ejecuta como código Ruby que debe devolver true o false. Si el bloque regresa true, se aplica la propiedad de guardia. Si el bloque regresa false, la propiedad de guardia no se aplica.

Una propiedad de protección es útil para garantizar que un recurso sea idempotente al permitir que ese recurso pruebe el estado deseado mientras se está ejecutando, y luego, si el estado deseado está presente, para que Chef Infra Client no haga nada.

Propiedades

Las siguientes propiedades se pueden utilizar para definir una protección que se evalúa durante la fase de ejecución de una ejecución de Chef Infra Client:

not_if

Evitar que un recurso se ejecute cuando la condición regrese true.

only_if

Permitir que un recurso se ejecute solo si la condición regresa true.

Ejemplos de


Los siguientes ejemplos demuestran varios enfoques para usar el openssl_x509_certificate recurso en recetas:

Cree un archivo de certificado autofirmado simple

openssl_x509_certificate '/etc/httpd/ssl/mycert.pem'do
  common_name 'www.f00bar.com'
  org 'Foo Bar'
  org_unit 'Lab'
  country 'US'end

Crea un certificado usando opciones adicionales

openssl_x509_certificate '/etc/ssl_files/my_signed_cert.crt'do
  common_name 'www.f00bar.com'
  ca_key_file '/etc/ssl_files/my_ca.key'
  ca_cert_file '/etc/ssl_files/my_ca.crt'
  expire 365
  extensions('keyUsage'=>'values'=>%w(
        keyEncipherment
        digitalSignature),'critical'=>true,,'extendedKeyUsage'=>'values'=>%w(serverAuth),'critical'=>false,)
  subject_alt_name ['IP:127.0.0.1','DNS:localhost.localdomain']end