Como criar um certificado autoassinado com PowerShell

Os certificados autoassinados são uma maneira fácil de realizar testes e outras tarefas menos importantes. Os certificados autoassinados não têm uma cadeia confiável de certificados de backup e são assinados pelo usuário que os criou. Se você confiar na entidade que assinou o certificado, poderá usá-lo da mesma forma que usaria um certificado devidamente validado.
Se você precisar criar um certificado autoassinado, uma maneira de fazer isso é com o PowerShell. Neste artigo, você aprenderá a criar um certificado autoassinado no PowerShell.
Criação de um certificado autoassinado
Para criar um certificado autoassinado com PowerShell, você pode usar o cmdlet New-SelfSignedCertificate. Este cmdlet está incluído no módulo PKI.
Existem muitas opções quando se trata de criar certificados. Os tipos de certificado autoassinado comuns são SSLServerAuthentication (padrão para o cmdlet) e CodeSigning. Além disso, você pode criar um DocumentEncryptionCert, que é muito útil para criptografar arquivos e, finalmente, um certificado personalizado que permite especificar muitas opções personalizadas.
Vamos continuar e criar um certificado SSLServerAuthentication regular. Geralmente é usado para proteger sites com criptografia SSL. Você pode ver um exemplo disso abaixo. Neste exemplo, o certificado está sendo armazenado em Cert: \ LocalMachine \ My Certificate Store.
$ Params = @ {"DnsName" = @ ("mywebsite. com", "www. mywebsite. com") "CertStoreLocation" = "Cert: \ LocalMachine \ My" "NotAfter" = (Get- Date) . AddMonths (6) "KeyAlgorithm" = "RSA" "KeyLength" = "2048"} PS C: \ > New-SelfSignedCertificate @Params PSParentPath: Microsoft. PowerShell. Security \ Certificate :: LocalMachine \ My Thumbprint Assunto EnhancedKeyUsageList ---------- ------- ----------- --------- 4EFF6B1A0F61B4BG692C77F09889BD151EE8BB58 CN = mywebsite. com
Publicidade
Se tudo correu bem, agora você deve ter um certificado recém-criado! Você notará que a saída retorna o assunto, mas o assunto exibe apenas o primeiro item passado a ele por meio do parâmetro DnsName. Isso ocorre porque o segundo URL se torna parte da lista alternativa de assuntos.
* Observe que se você tentar executar isso, não como um administrador, receberá uma mensagem de erro como a abaixo:
New-SelfSignedCertificate: CertEnroll :: CX509Enrollment :: _ CreateRequest: Acesso negado. 0x80090010 (-2146893808 NTE_PERM)
Como você pode ver com o acesso negado, você ainda não tem permissão para executar isso. *
Como encontrar informações em nosso certificado
Vamos nos certificar de que o certificado foi criado da maneira que esperávamos. Para encontrar informações sobre um determinado certificado com o PowerShell, você pode usar o cmdlet Get-ChildItem, da mesma forma que listaria arquivos em um diretório.
PS C: \ > Get-ChildItem -Path "Cert: \ LocalMachine \ My" | Where-Object Thumbprint -EQ 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58 | Select-Object * PSPath: Microsoft. PowerShell. Security \ Certificado :: LocalMachine \ My \ 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58 58 PSParentPath: Microsoft. PowerShell. Security \ Certificado :: LocalMachine \ My PSChildName: 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58 PSDrive: Cert PSProvider: Microsoft. PowerShell. Security \ Certificate PSIsContainer: False EnhancedKeyUsageList: DnsNameList: SendAsTrustedIssuer: False EnrollmentPolicyEndPoint: Microsoft. CertificateServices. Commands. EnrollmentEndPointProperty EnrollmentServerEndPoint: Microsoft. CerteyServicesIssuer: False EnrollmentPolicyEndPoint: Microsoft. CertificateServices. Commands. EnrollmentEndPointProperty EnrollmentServerEndPoint: Microsoft. CerteyServicesServices. Commands. EnrollmentEnddicept : System. Security. Cryptography.X509Certificates.X500DistinguishedName NotAfter: 6/22/2020 11:50:15 AM NotBefore: 12/22/2019 10:40:20 AM PublicKey: System. Security. Cryptography.X509Certificates. PublicKey RawData: SerialNumber : 608C4D5E6B8D41B44ADDC6BD725FE264 SignatureAlgorithm: System. Security. Cryptography. Oid SubjectName: System. Security. Cryptography.X509Certificates.X500DistinguishedName Thumbprint: 4EFF6B1A0F61B4BF692C77F09889AD151EE8BB58 Versão: 3 Handle: 2628421609632 Emissor: CNsite CN = mywebite. com]Há muitas informações úteis aqui, mas você pode notar na DnsNameList que os dois sites agora são exibidos. Além disso, a data NotAfter é preenchida corretamente como 6 meses a partir da data de criação.
Certificado de assinatura de código
Se você trabalha no PowerShell, saberá sobre as políticas de execução. Se você tiver uma política de execução definida como AllSigned, precisará assinar cada script executado em seu sistema. Para criar um certificado para fazer isso, é muito simples!
PS C: \ > New-SelfSignedCertificate -Type 'CodeSigningCert' -DnsName 'MyHost' PSParentPath: Microsoft. PowerShell. Security \ Certificate :: LocalMachine \ MY Thumbprint Assunto EnhancedKeyUsageList ---------- ------- --- ----------------- 14D535EG834370293BA103159EB00876A79959D8 CN = assinatura de código MyHost
Certificado de proteção de documentos
Você pode não ter encontrado muito isso antes, mas o PowerShell, com a API de proteção de dados, pode criptografar arquivos em seu sistema usando um certificado de proteção de documentos. Usando o cmdlet New-SelfSignedCertificate, podemos facilmente fazer um certificado para criptografar seus documentos.
$ Params = @ {"DnsName" = "MyHost" "CertStoreLocation" = "Cert: \ CurrentUser \ My" "KeyUsage" = "KeyEncipherment", "DataEncipherment", "KeyAgreement" "Type" = " DocumentEncryptionCert "} PS C: \ > New-SelfSignedCertificate @Params Thumbprint Subject EnhancedKeyUsageList ---------- ------- -------------------- 14D535EG934370293BA203159EB00876A79959D8 CN = Documento MyHost Criptografia
Publicidade
Com este tipo de certificado, agora você pode usar o certificado criado para criptografar e descriptografar conteúdo usando comandos do PowerShell como Protect-CMSMessage e UnProtect-CMSMessage.
Criptografar / descriptografar conteúdo como este torna-se útil se você precisar passar os dados criptografados, pois poderá usar esse certificado em outro sistema para descriptografar os dados. Se você depender da API de proteção de dados (DPAPI) padrão incorporada ao Windows, não poderá descriptografar os dados em outros sistemas ou para outros usuários.
Resumo
O PowerShell torna a criação de certificados autoassinados incrivelmente fácil de fazer. Esses certificados têm uma infinidade de usos, mas uma observação importante a lembrar é que eles devem ser usados apenas em testes. Você não terá uma cadeia de certificados confiáveis para validar seus certificados autoassinados.
Vendo como é rápido e fácil criar certificados autoassinados, você pode começar a fazer isso hoje e criptografar adequadamente todas as conexões ou dados de que precisar!
Nenhum comentário