Mudanças entre as edições de "Certificados Ssl Auto-Assinados"
(2 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 17: | Linha 17: | ||
Gerar a chave privada (Private Key): | Gerar a chave privada (Private Key): | ||
− | server:~/certs# openssl genrsa -des3 -out server.key 1024 | + | server:~/certs# openssl genrsa -des3 -out server.key 1024 |
− | Generating RSA private key, 1024 bit long modulus | + | Generating RSA private key, 1024 bit long modulus |
− | ..................................................................++++++ | + | ..................................................................++++++ |
− | ...................................++++++ | + | ...................................++++++ |
− | e is 65537 (0x10001) | + | e is 65537 (0x10001) |
− | Enter pass phrase for server.key: | + | Enter pass phrase for server.key: |
− | Verifying - Enter pass phrase for server.key: | + | Verifying - Enter pass phrase for server.key: |
A chave privada está encriptada e protegida por uma password, o que implica que se escreva a password cada vez que um serviço necessita da chave. Como solução, é possível gerar uma versão da chave sem a protecção da password: | A chave privada está encriptada e protegida por uma password, o que implica que se escreva a password cada vez que um serviço necessita da chave. Como solução, é possível gerar uma versão da chave sem a protecção da password: | ||
− | server:~/certs# openssl rsa -in server.key -out server.key.insecure | + | server:~/certs# openssl rsa -in server.key -out server.key.insecure |
− | Enter pass phrase for server.key: | + | Enter pass phrase for server.key: |
− | writing RSA key | + | writing RSA key |
Esta chave sem password, deve ser guardada com especial cuidado e, nomeadamente, só deve ser acessível pelo utilizador root: | Esta chave sem password, deve ser guardada com especial cuidado e, nomeadamente, só deve ser acessível pelo utilizador root: | ||
− | server:~/certs# chmod 600 server.key.insecure | + | server:~/certs# chmod 600 server.key.insecure |
Gerar o pedido de certificação (Certificate Signing Request): | Gerar o pedido de certificação (Certificate Signing Request): | ||
− | server:~/certs# openssl req -new -key server.key -out server.csr | + | server:~/certs# openssl req -new -key server.key -out server.csr |
− | Enter pass phrase for server.key: | + | Enter pass phrase for server.key: |
− | You are about to be asked to enter information that will be incorporated | + | You are about to be asked to enter information that will be incorporated |
− | into your certificate request. | + | into your certificate request. |
− | What you are about to enter is what is called a Distinguished Name or a DN. | + | What you are about to enter is what is called a Distinguished Name or a DN. |
− | There are quite a few fields but you can leave some blank | + | There are quite a few fields but you can leave some blank |
− | For some fields there will be a default value, | + | For some fields there will be a default value, |
− | If you enter '.', the field will be left blank. | + | If you enter '.', the field will be left blank. |
− | ----- | + | ----- |
− | Country Name (2 letter code) [AU]:PT | + | Country Name (2 letter code) [AU]:PT |
− | State or Province Name (full name) [Some-State]:Portugal | + | State or Province Name (full name) [Some-State]:Portugal |
− | Locality Name (eg, city) []: | + | Locality Name (eg, city) []: |
− | Organization Name (eg, company) [Internet Widgits Pty Ltd]:Home Lan | + | Organization Name (eg, company) [Internet Widgits Pty Ltd]:Home Lan |
− | Organizational Unit Name (eg, section) []: | + | Organizational Unit Name (eg, section) []: |
− | Common Name (eg, YOUR name) []:server.home.lan | + | Common Name (eg, YOUR name) []:server.home.lan |
− | Email Address []: | + | Email Address []: |
− | + | ||
− | Please enter the following 'extra' attributes | + | Please enter the following 'extra' attributes |
− | to be sent with your certificate request | + | to be sent with your certificate request |
− | A challenge password []: | + | A challenge password []: |
− | An optional company name []: | + | An optional company name []: |
O pedido de certificado deveria ser enviado para a entidade certificadora, que devolveria o certificado assinado. Neste caso, será usado para criar um certificado auto assinado (Self-Signed Certificate), válido por 365 dias: | O pedido de certificado deveria ser enviado para a entidade certificadora, que devolveria o certificado assinado. Neste caso, será usado para criar um certificado auto assinado (Self-Signed Certificate), válido por 365 dias: | ||
− | server:~/certs# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt | + | server:~/certs# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt |
− | Signature ok | + | Signature ok |
− | subject=/C=PT/ST=Portugal/O=Home Lan/CN=server.home.lan | + | subject=/C=PT/ST=Portugal/O=Home Lan/CN=server.home.lan |
− | Getting Private key | + | Getting Private key |
− | Enter pass phrase for server.key: | + | Enter pass phrase for server.key: |
O processo de criação dos certificados está concluído. No final foram gerados os seguintes ficheiros: | O processo de criação dos certificados está concluído. No final foram gerados os seguintes ficheiros: | ||
Linha 77: | Linha 77: | ||
Finalmente, copiar as chaves privadas para /etc/ssl/private e o certificado para /etc/ssl/certs: | Finalmente, copiar as chaves privadas para /etc/ssl/private e o certificado para /etc/ssl/certs: | ||
− | server:~/certs# cp server.key server.key.insecure /etc/ssl/private/ | + | server:~/certs# cp server.key server.key.insecure /etc/ssl/private/ |
− | server:~/certs# cp server.crt /etc/ssl/certs/ | + | server:~/certs# cp server.crt /etc/ssl/certs/ |
O certificado auto-assinado está pronto a usar. No entanto, como não está assinado por uma entidade certificada, a sua utilização dará sempre origem a um aviso por parte da aplicação cliente: | O certificado auto-assinado está pronto a usar. No entanto, como não está assinado por uma entidade certificada, a sua utilização dará sempre origem a um aviso por parte da aplicação cliente: | ||
untrusted_cert.png | untrusted_cert.png | ||
+ | |||
+ | [[Categoria:Servidor]] | ||
+ | [[Categoria:Servidor de mensagens]] |
Edição atual tal como às 06h41min de 10 de novembro de 2012
Objectivo
Para estabelecer uma ligação segura e de confiança é necessário gerar certificados que atestem a identidade do servidor. Esses certificados são geralmente emitidos por entidades certificadoras (Certificate Authority) independentes e de confiança reconhecida. No entanto, é possível criar um certificado "auto-assinado". Instalação
# apt-get install openssl ca-certificates
Geração dos certificados
A geração de um certificado SSL requer os seguintes passos: primeiro é gerada uma chave privada; em seguida esta é usada para gerar um pedido de certificação (Certificate Signing Request (CSR)). O pedido de certificação é então enviado para a entidade certificadora (Certificate Authority (CA)) que devolve o certificado assinado. Este último passo pode ser feito pelo próprio, gerando um certificado auto assinado (Self-signed Certificate). Criar uma directoria de trabalho:
# mkdir certs # cd certs
Gerar a chave privada (Private Key):
server:~/certs# openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus ..................................................................++++++ ...................................++++++ e is 65537 (0x10001) Enter pass phrase for server.key: Verifying - Enter pass phrase for server.key:
A chave privada está encriptada e protegida por uma password, o que implica que se escreva a password cada vez que um serviço necessita da chave. Como solução, é possível gerar uma versão da chave sem a protecção da password:
server:~/certs# openssl rsa -in server.key -out server.key.insecure Enter pass phrase for server.key: writing RSA key
Esta chave sem password, deve ser guardada com especial cuidado e, nomeadamente, só deve ser acessível pelo utilizador root:
server:~/certs# chmod 600 server.key.insecure
Gerar o pedido de certificação (Certificate Signing Request):
server:~/certs# openssl req -new -key server.key -out server.csr Enter pass phrase for server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:PT State or Province Name (full name) [Some-State]:Portugal Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]:Home Lan Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:server.home.lan Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
O pedido de certificado deveria ser enviado para a entidade certificadora, que devolveria o certificado assinado. Neste caso, será usado para criar um certificado auto assinado (Self-Signed Certificate), válido por 365 dias:
server:~/certs# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt Signature ok subject=/C=PT/ST=Portugal/O=Home Lan/CN=server.home.lan Getting Private key Enter pass phrase for server.key:
O processo de criação dos certificados está concluído. No final foram gerados os seguintes ficheiros: Ficheiro Descrição server.key A chave privada server.key.insecure A chave privada sem password server.csr O pedido de assinatura do certificação server.crt O certificado auto-assinado.
Finalmente, copiar as chaves privadas para /etc/ssl/private e o certificado para /etc/ssl/certs:
server:~/certs# cp server.key server.key.insecure /etc/ssl/private/ server:~/certs# cp server.crt /etc/ssl/certs/
O certificado auto-assinado está pronto a usar. No entanto, como não está assinado por uma entidade certificada, a sua utilização dará sempre origem a um aviso por parte da aplicação cliente: untrusted_cert.png