How to Set or Remove the critical Flag on Key Usage or Extended Key Usage Extensions

Abierto
#353 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
42/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
rust

Línea de trabajo

Comienza con CertificateParams y la ruta serialize_request mostrada en el issue; después, inspecciona cómo key_usages y extended_key_usages se convierten en extensiones X.509 solicitadas. Confirma que el diseño puede establecer de forma independiente la criticidad de cada extensión y verifica que los CSRs generados marquen Key Usage como no crítica y Extended Key Usage como crítica.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Hi

I've the following function that I'm using to generate a CSR,

pub fn generate_csr(config: &CommonConfig) -> Result<model::CsrBundle> {
    let mut params: CertificateParams = CertificateParams::new(config.dns_array())?;
    params.is_ca = IsCa::NoCa;

    let mut dn = DistinguishedName::new();
	// dn information....
    params.distinguished_name = dn;

    let now = time::OffsetDateTime::now_utc();
    params.not_before = now;
    params.not_after = now + time::Duration::days(365);

    // key usage attributes
    params.key_usages = vec![
        KeyUsagePurpose::DigitalSignature,
        KeyUsagePurpose::KeyEncipherment,
        KeyUsagePurpose::KeyAgreement,
    ];
    params.extended_key_usages = vec![ExtendedKeyUsagePurpose::ServerAuth];

    // CSR creation and signing
    let key = generate_private_key();
    let csr = params.serialize_request(&key)?;

    Ok(model::CsrBundle { csr, key })
}

The resulting CSR contains:

        Attributes:
            Requested Extensions:
                X509v3 Key Usage: critical
                    Digital Signature, Key Encipherment, Key Agreement
                X509v3 Extended Key Usage:
                    TLS Web Server Authentication

However, I would like to configure the CSR so that:

  • Key Usage is marked non-critical
  • Extended Key Usage is marked critical

Is there a way to configure this in rcgen? I couldn’t find any options in CertificateParams to change the criticality of individual extensions.

Thanks in advance for any help!

Lenguaje dominante
Rust
Estrellas
516
Forks
160
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de rustls/rcgen

Todos los issues de rustls/rcgen

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.