Pré-requisitos para criptografia S/MIME
Introdução
O conector de Email permite que você use S/MIME para assinar ou assinar e criptografar um email antes de enviá-lo usando a atividade Enviar Email, bem como ler emails que foram assinados e/ou criptografados dessa forma usando a atividade Ler Email, mas em ambos os cenários você precisa ter um certificado S/MIME. Além disso, uma "autoridade certificadora", ou CA, é necessária para assinar seu certificado, mas você pode ser sua própria CA. Esta página ensina como fazer isso.
Os certificados são baseados em criptografia de chave pública. Portanto, a chave pública do destinatário do email é necessária para criptografar o email. Por outro lado, para receber um email criptografado, o remetente precisa da sua chave pública.
Esta página descreve a criação de um par de chaves pública/privada pessoal. Embora você precise fornecer sua chave pública a alguém para receber um email criptografado, sua chave privada deve ser mantida apenas por você.
Instruções passo a passo
Embora outras ferramentas também possam ser utilizadas, as instruções fornecidas nesta página serão baseadas no OpenSSL. Se você estiver usando o Windows, certifique-se de executar o prompt de comando como administrador.
Etapa 1: Crie um arquivo de configuração OpenSSL
Se a sua distribuição OpenSSL já inclui um arquivo de configuração padrão contendo as extensões necessárias, esta etapa não é necessária. Ao executar o comando openssl.exe
(do diretório onde o OpenSSL está instalado), uma mensagem o avisará se não houver um arquivo de configuração.
Se a sua distribuição não tiver um arquivo de configuração padrão, crie um arquivo chamado smime.cnf
contendo a seguinte configuração:
[req]
distinguished_name = req_distinguished_name
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = AU
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Internet Widgits Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
[v3_ca]
basicConstraints = critical, CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer
[smime]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = emailProtection
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer
subjectAltName = email:copy
Em seguida, defina o OPENSSL_CONF
variável de ambiente para referenciar o novo arquivo de configuração. Em um terminal, digite o seguinte comando:
set OPENSSL_CONF=c:/openssl/smime.cnf
export OPENSSL_CONF=/usr/bin/openssl
Etapa 2: gerar uma chave privada RSA para a autoridade de certificação
Para gerar uma chave privada RSA para a nova autoridade certificadora, abra um terminal. No exemplo abaixo, as opções especificam o uso da chave privada RSA. aes256
cifra de criptografia e enviar os resultados para um arquivo chamado ca.key
com um tamanho de 4096 bits:
openssl genrsa -aes256 -out ca.key 4096
openssl genpkey -aes256 -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out ca.key
Você será solicitado a criar uma senha para esta chave. Guarde esta senha para uso na Etapa 3.
Etapa 3: Crie um certificado autoassinado para a autoridade de certificação
Abra um terminal. O exemplo abaixo especifica que o certificado gerado é certificado por 10 anos e usa a chave privada criada na Etapa 2. O comando -x509
especifica que é um certificado autoassinado. Ele também grava o certificado em um arquivo chamado ca.crt
.
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -extensions v3_ca
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -extensions v3_ca
Nota
Se a sua distribuição OpenSSL já tiver um arquivo de configuração adequado, o que significa que você pulou a Etapa 1 acima, você deve remover o -extensions v3_ca
deste comando.
Você verá uma série de prompts. Siga-os usando a senha da Etapa 2. Depois disso, a autoridade certificadora terá sido criada.
Etapa 4: Gere uma chave privada para o certificado de email pessoal
Em seguida, crie uma nova chave privada. Esta é para o seu certificado pessoal, e não para a autoridade certificadora. O exemplo abaixo é para alguém chamada Jane Doe com um endereço de email de jane_doe@example.com
e usa RSA.
openssl genrsa -aes256 -out smime_jane_doe.key 4096
openssl genpkey -aes256 -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out smime_jane_doe.key
Quando solicitado, digite uma senha diferente daquela que você usou ao criar a chave privada da autoridade certificadora na Etapa 1. Guarde esta senha para uso na Etapa 5.
Nota
Você não precisa necessariamente usar RSA para criar uma chave privada. Outros algoritmos criptográficos disponíveis, como ECC, também podem ser usados.
Etapa 5: Criar a solicitação de assinatura do certificado
Crie a solicitação de assinatura de certificado executando o seguinte comando:
openssl req -new -key smime_jane_doe.key -out smime_jane_doe.csr
openssl req -new -key smime_jane_doe.key -out smime_jane_doe.csr
Quando solicitado, digite a senha que você usou para criar a chave privada na Etapa 4. Observe que quando você for solicitado a fornecer um Common Name
, não forneça o mesmo que você fez nos prompts no final da Etapa 3.
Etapa 6: Assine o certificado usando a autoridade de certificação
Crie o certificado pessoal autoassinado usando o arquivo de configuração criado na Etapa 1 para definir as extensões necessárias e a autoridade certificadora será usada para assinar o novo certificado pessoal.
Execute o seguinte comando (incrementar set_serial
com cada solicitação de assinatura):
openssl x509 -req -days 3650 -in smime_jane_doe.csr -CA ca.crt -CAkey ca.key -set_serial 1 -out smime_jane_doe.crt -addtrust emailProtection -addreject clientAuth -addreject serverAuth -trustout -extfile c:\openssl\smime.cnf -extensions smime
openssl x509 -req -days 3650 -in smime_jane_doe.csr -CA ca.crt -CAkey ca.key -set_serial 1 -out smime_jane_doe.crt -sha256
Quando solicitado, digite a senha para a chave privada da autoridade certificadora da Etapa 2.
Nota
Se a sua distribuição OpenSSL já tiver um arquivo de configuração adequado, o que significa que você pulou a Etapa 1 acima, remova os dois últimos argumentos do comando mostrado nesta etapa. Certifique-se de que as extensões listadas existam no seu arquivo de configuração padrão antes de fazer isso.
Etapa 7: gerar um arquivo de chave privada
Execute o seguinte comando para gerar um arquivo PKCS#12 (smime_cert.p12
) contendo a chave privada e o certificado:
openssl pkcs12 -export -in smime_cert.crt -inkey smime_cert.key -out smime_cert.p12
openssl pkcs12 -inkey smime_cert.key -in smime_cert.crt -export -out smime_cert.pfx
Quando solicitado, digite a senha associada à sua chave privada pessoal criada na Etapa 4. Crie outra senha que será usada ao importar o .p12
arquivo em um cliente de email. Guarde esta segunda senha, pois você será solicitado a fornecê-la ao habilitar a criptografia S/MIME em Ler Email ou Enviar Email atividades.
Aviso
Não compartilhe sua chave privada com ninguém. Para enviar um email criptografado, o remetente precisa saber sua chave pública, mas sua chave privada deve ser mantida apenas por você.
Etapa 8: mover o arquivo para um caminho de agente
Agora que você tem um certificado, que está compactado no .p12
arquivo criado na Etapa 7, mova esse arquivo para um caminho visível do agente (por exemplo, o Resources
pasta) e importe o certificado para o truststore padrão (consulte Adicionar certificados para aprender como fazer isso).
Nota
Ao importar o certificado para o truststore padrão, mantenha o alias que você usa para identificá-lo, pois você será solicitado a fornecê-lo ao habilitar a criptografia S/MIME em Ler Email ou Enviar Email atividades.
Próximos passos
Agora que seu certificado S/MIME autoassinado foi criado, ele pode ser usado para assinar ou assinar e criptografar seus emails, bem como para ler emails que foram enviados. Ao fornecer sua chave pública a um remetente, você pode receber emails criptografados dele. Assim que o destinatário fornecer sua chave pública, você também poderá enviar um email criptografado.