Ativando TLS
Para ativarmos o suporte ao TLS precisamos gerar um par de chaves criptográficas e assiná-las.
1. Instale o OpenSSl
aptitude install openssl
2. Crie um diretório para armazenamento das chaves
mkdir /etc/ldap/tls cd /etc/ldap/tls
Crie uma Agência Certificadora
1. Execute o seguinte comando:
/usr/lib/ssl/misc/CA.sh -newca
O seguinte questionário para criação da senha deve ser preenchido
CA certificate filename (or enter to create) Making CA certificate ... Generating a 1024 bit RSA private key .........++++++ ...........++++++ writing new private key to './demoCA/private/./cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- 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]:BR State or Province Name (full name) [Some-State]:SP Locality Name (eg, city) []:SaoPaulo Organization Name (eg, company) [Internet Widgits Pty Ltd]:KyaPanel Organizational Unit Name (eg, section) []:TI Common Name (eg, YOUR name) []:Signatures Co. Email Address []:webmaster@kyapanel.com.br Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:123456 An optional company name []:Signatures Co.
2. Após preencher o formulário será gerada a agência certificadora e a chave para podermos assinar o certificado do nosso servidor
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/./cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 0 (0x0)
Validity
Not Before: May 31 13:04:53 2007 GMT
Not After : May 30 13:04:53 2010 GMT
Subject:
countryName = BR
stateOrProvinceName = SP
organizationName = 4Linux
organizationalUnitName = TI
commonName = Signatures Co.
emailAddress = webmaster@kyapanel.com.br
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
B0:21:74:8E:AC:AC:9D:1A:E8:1F:2C:AB:D7:A4:B9:11:D4:4B:3F:84
X509v3 Authority Key Identifier:
keyid:B0:21:74:8E:AC:AC:9D:1A:E8:1F:2C:AB:D7:A4:B9:11:D4:4B:3F:84
Certificate is to be certified until May 30 13:04:53 2010 GMT (1095 days)
Write out database with 1 new entries
Data Base Updated
3. Agora podemos criar o certificado para o nosso servidor
openssl req -new -nodes -keyout newreq.pem -out newreq.pem
Um novo questionário será apresentado, mas agora para a chave do nosso servidor. A única pergunta que deve ser respondida de forma precisa é o nome do servidor – Common Name – que deve ser o FQDN da máquina servidora.
Generating a 1024 bit RSA private key ........................++++++ ...............++++++ writing new private key to 'newreq.pem' ----- 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]:BR State or Province Name (full name) [Some-State]:SP Locality Name (eg, city) []:SaoPaulo Organization Name (eg, company) [Internet Widgits Pty Ltd]:4Linux Organizational Unit Name (eg, section) []:TI Common Name (eg, YOUR name) []:ldap__.kyapanel.com.br Email Address []:webmaster@kyapanel.com.br Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:123456 An optional company name []:4Linux
4. Agora que o certificado do servidor e a agência certificadora foram criados, resta assinar o certificado do servidor usando a agência certificadora.
/usr/lib/ssl/misc/CA.sh -sign
Após esse comando será apresentado o certificado do servidor e surgirá a pergunta confirmando se é realmente esse certificado que deve ser assinado. Confirme.
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: May 31 13:15:00 2007 GMT
Not After : May 30 13:15:00 2008 GMT
Subject:
countryName = BR
stateOrProvinceName = SP
localityName = SaoPaulo
organizationName = 4Linux
organizationalUnitName = TI
commonName = ldap__.kyapanel.com.br
emailAddress = webmaster@kyapanel.com.br
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
57:E9:23:6E:F4:D6:3D:11:BD:37:81:02:04:1E:D4:02:04:55:C3:EB
X509v3 Authority Key Identifier:
keyid:B0:21:74:8E:AC:AC:9D:1A:E8:1F:2C:AB:D7:A4:B9:11:D4:4B:3F:84
Certificate is to be certified until May 30 13:15:00 2008 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
5. Após as confirmações, será impresso na tela o conteúdo do certificado e a chave criptográfica, que agora localizam-se em “newcert.pem” e “newreq.pem”
Write out database with 1 new entries
Data Base Updated
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=BR, ST=SP, O=4Linux, OU=TI, CN=Signatures Co./
emailAddress=webmaster@kyapanel.com.br
Validity
Not Before: May 31 13:15:00 2007 GMT
Not After : May 30 13:15:00 2008 GMT
Subject: C=BR, ST=SP, L=SaoPaulo, O=4Linux, OU=TI,
CN=ldap__.kyapanel.com.br/emailAddress=webmaster@kyapanel.com.br
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:bc:c5:ad:4e:89:c9:b1:d0:45:7e:07:5c:50:f5:
55:b4:7f:04:aa:06:5c:d4:33:fb:3f:d6:72:1c:8a:
f3:1e:2b:b6:c7:d3:82:56:3e:0f:10:4a:79:73:c4:
e9:8b:3b:37:b5:bf:24:28:f8:1d:ad:66:b2:6c:d4:
c5:13:b3:42:2b:c7:bf:b3:5f:64:55:4f:c5:56:e2:
d1:63:4d:eb:19:10:e5:cb:40:e5:02:43:e8:de:28:
8c:51:db:98:77:10:4d:a7:19:0b:c6:fe:4d:53:3e:
ea:6d:6a:6e:87:27:ba:fc:44:36:f9:ac:33:16:1d:
a2:70:c6:0f:ab:f9:19:1b:2d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
57:E9:23:6E:F4:D6:3D:11:BD:37:81:02:04:1E:D4:02:04:55:C3:EB
X509v3 Authority Key Identifier:
keyid:B0:21:74:8E:AC:AC:9D:1A:E8:1F:2C:AB:D7:A4:B9:11:D4:4B:3F:84
Signature Algorithm: sha1WithRSAEncryption
76:ff:d3:b3:c2:4d:62:82:77:d9:f9:09:98:10:10:16:79:46:
63:18:dc:6e:18:8e:dc:cc:70:45:e9:b1:1a:85:f7:2f:36:76:
c6:48:b2:eb:38:1f:9b:85:34:fb:5a:81:ba:a4:7f:3f:74:19:
18:2a:c3:42:78:be:05:5f:75:46:78:69:f2:e7:ca:53:39:43:
7a:9c:6f:b8:54:b0:66:93:31:eb:4b:dd:5e:01:e9:dc:52:05:
cf:a1:d2:d5:26:4c:32:16:bd:51:fa:3c:50:43:09:00:27:75:
cb:90:b8:2d:48:b2:96:8f:28:cf:bf:ac:09:1f:df:81:f5:67:
e4:93
-----BEGIN CERTIFICATE-----
MIIC/DCCAmWgAwIBAgIBATANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJCUjEL
MAkGA1UECBMCU1AxDzANBgNVBAoTBjRMaW51eDELMAkGA1UECxMCVEkxFzAVBgNV
BAMTDlNpZ25hdHVyZXMgQ28uMSYwJAYJKoZIhvcNAQkBFhd3ZWJtYXN0ZXJANGxp
bnV4LmNvbS5icjAeFw0wNzA1MzExMzE1MDBaFw0wODA1MzAxMzE1MDBaMIGRMQsw
CQYDVQQGEwJCUjELMAkGA1UECBMCU1AxETAPBgNVBAcTCFNhb1BhdWxvMQ8wDQYD
VQQKEwY0TGludXgxCzAJBgNVBAsTAlRJMRwwGgYDVQQDExNsZGFwMS40bGludXgu
Y29tLmJyMSYwJAYJKoZIhvcNAQkBFhd3ZWJtYXN0ZXJANGxpbnV4LmNvbS5icjCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvMWtTonJsdBFfgdcUPVVtH8EqgZc
1DP7P9ZyHIrzHiu2x9OCVj4PEEp5c8Tpizs3tb8kKPgdrWaybNTFE7NCK8e/s19k
VU/FVuLRY03rGRDly0DlAkPo3iiMUduYdxBNpxkLxv5NUz7qbWpuhye6/EQ2+awz
Fh2icMYPq/kZGy0CAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYd
T3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFFfpI2701j0R
vTeBAgQe1AIEVcPrMB8GA1UdIwQYMBaAFLAhdI6srJ0a6B8sq9ekuRHUSz+EMA0G
CSqGSIb3DQEBBQUAA4GBAHb/07PCTWKCd9n5CZgQEBZ5RmMY3G4YjtzMcEXpsRqF
9y82dsZIsus4H5uFNPtagbqkfz90GRgqw0J4vgVfdUZ4afLnylM5Q3qcb7hUsGaT
MetL3V4B6dxSBc+h0tUmTDIWvVH6PFBDCQAndcuQuC1IspaPKM+/rAkf34H1Z+ST
-----END CERTIFICATE-----
Signed certificate is in newcert.pem
6. Para facilitar a identificação dos arquivos, vamos alterar seus nomes
mv newcert.pem srvcert.pem mv newreq.pem srvkey.pem
7. Vamos posicionar o certificado da agência certificadora no mesmo diretório para facilitar nossa vida
cp demoCA/cacert.pem .
Alterando o slapd.conf para ativar o TLS
1. Para ativar o suporte a TLS no servidor devemos adicionar as seguintes linhas ao “slapd.conf” logo após a definição de inclusão dos schemas
TLSCertificateFile /etc/ldap/tls/srvcert.pem TLSCertificateKeyFile /etc/ldap/tls/srvkey.pem TLSCACertificateFile /etc/ldap/tls/cacert.pem
2. Pare o servidor slapd e inicie-o em modo debug 64 para detectar possíveis erros
/etc/init.d/slapd stop slapd -d 64
3. Se o servidor iniciou corretamente, pare o modo debug e inicie o servidor normalmente
/etc/init.d/slapd start
Ativando o suporte aos clientes
Para podermos usar uma ferramenta cliente para verificar se o suporte ao “TLS” está funcionando, precisamos configurá-la para usar “TLS”.
1. Adicione a seguinte linha ao /etc/ldap/ldap.conf
TLS_CACERT /etc/ldap/tls/cacert.pem
OBSERVAÇÃO: o campo “URI” deve estar referenciando o nome (FQDN) do servidor, não o endereço IP. Isso pois o certificado foi emitido usando o nome FQDN do servidor e se essas duas informações não corresponderem o acesso via “TLS” ficará impossibilitado.
Teste de funcionamento
Para testar se o “TLS” está funcionando, basta adicionar o parâmetro -ZZ ao ldapsearch
ldapsearch -x -ZZ
Se o comando com o parâmetro “-ZZ”, que pede conexão segura, funcionou então o suporte a “TLS” está configurado. O que resta é ativar o suporte a “TLS” para todos os serviços que forem acessar nossa base OpenLDAP.
Licença
Copyright 2007 Anahuac de Paula Gil e Francisco Kem Iti Saito
Permite-se distribuição, publicação e cópia literal da íntegra deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright, a URL oficial do documento e esta nota de permissão.
Permite-se também distribuição, publicação e cópia literal de seções individuais deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright e a nota de permissão acima, e que a URL oficial do documento seja preservada ou substituída pela URL oficial da seção individual.