summaryrefslogtreecommitdiff
path: root/docs/keys.md
blob: 09ee5d32f3a59e0d3a2be2edb72a0d53ab794733 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# Chaves

## Repositório de chaves

### Configuração

A maior parte dos procedimentos a seguir depende do aplicativo
[keyringer](http://git.fluxo.info/?p=keyringer.git;a=summary), da [Hydra
Suite](http://git.fluxo.info/?p=hydra.git;a=summary) e de uma configuração do
tipo

Proceda então com a [configuração do ambiente de trabalho administrativo](/install).

### Inicializando um repositório

    # Inicializando
    keyringer $HYDRA init $FOLDER/conf/keyring

### Gerando chaves https

Gerar chaves e certificados SSL auto-assinados é simples:

    # Gerando chaves para https
    keyringer $HYDRA genpair ssl-self ssl/$DOMAIN $DOMAIN

Caso você queira gerar apenas a chave e a requisição de certificação (CSR), use

    keyringer $HYDRA genpair ssl ssl/$DOMAIN $DOMAIN

Para a chaves e requisições CaCert, use

    keyringer $HYDRA genpair ssl-cacert ssl/$DOMAIN $DOMAIN

### Gerando chaves para novos nodos

    # Gerando chaves ssh e gpg para novos nodos
    # A importacao das chaves gpg nos nodos deve ser feita manualmente
    hydra $HYDRA newkeys

### Submetendo mudanças

    # Submetendo
    keyringer $HYDRA git remote add origin giolite@admin.$DOMAIN:keyring.git
    keyringer $HYDRA git push origin master

### Importação de chaves GPG

Importando chaves nos seus respectivos nodos:

    hydra $HYDRA import-key

## Chaves SSH

Para gerar uma chave SSH pessoal, use um comando do tipo

    ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa     -C "seu@email"
    ssh-keygen -t ed25519     -f ~/.ssh/id_ed25519 -C "seu@email"

Esse tipo de comando irá gerar uma **chave privada** em `~/.ssh/id_rsa` e uma
respectiva **chave pública** em `~/.ssh/id_rsa.pub`. Se você já possui uma
chave em `~/.ssh/id_rsa` e quiser mantê-la, escolha outro nome para a nova
chave, como por exemplo `~/.ssh/id_rsa_aplicacao`.

## Senhas

Exemplo de geração de senhas usando o [pwgen](http://packages.debian.org/lenny/pwgen):

    pwgen -s -y 25

Atenção: muitos programas e configurações podem não funcionar por conta do uso
de caracteres especiais nas senhas. Assim, recomenda-se evitar alguns
caracteres especiais -- por exemplo delimitadores de campo -- quando for o caso
e/ou testar a senha após a sua escolha.

## Impressões digitais

### Chaves SSL

Chaves SSL podem ter seu fingerprint determinado através usando o [OpenSSL em
linha de comando](http://www.madboa.com/geek/openssl), com linhas do tipo

    openssl x509 -noout -in /etc/ssl/certs/cert.crt -fingerprint
    openssl x509 -noout -in /etc/ssl/certs/cert.crt -fingerprint -md5

### Chaves públicas SSH

O seguinte comando retorna todas as fingerprints dos arquivos de chave pública ssh terminados em `.pub` no diretório `/etc/ssh/`:

    hydractl ssh-finger

Para obter um fingerprint salvo no seu `~/.ssh/known_hosts` pessoal, use

    ssh-keygen -l -F  servidor.exemplo.org        -f ~/.ssh/known_hosts
    ssh-keygen -l -F [servidor.exemplo.org]:porta -f ~/.ssh/known_hosts

## Monkeysphere

O [monkeysphere](http://web.monkeysphere.info) é um programa que permite a
verificação de hosts SSH e usuários/as através da Teia de Confiabilidade do
OpenPGP. Com ele, o gerenciamento de fingerprints fica mais fácil e evita que
páginas como esta centralizem informações que possam se desatualizar.

Além dos [usos já documentados](http://web.monkeysphere.info/doc/), o
monkeysphere pode ser utilizado também para autenticação em sistemas que não
possuem tal suporte:

    monkeysphere gen-subkey -l 4096                      # caso voce ainda nao tenha uma chave
    mkdir -m 700 ~/.monkeysphere
    echo "SEU-ID" >> ~/.monkeysphere/authorized_user_ids # exemplo: "Seu Nome <seu-email@example.org>"
    touch ~/.ssh/id_rsa_monkeysphere.pub
    chmod 600 ~/.ssh/id_rsa_monkeysphere.pub
    MONKEYSPHERE_AUTHORIZED_KEYS=$HOME/.ssh/id_rsa_monkeysphere.pub monkeysphere update-authorized_keys

Agora, basta fornecer a chave localizada em `~/.ssh/id_rsa_monkeysphere.pub` para autenticação :)

## Hashes

Hashes são úteis para o armazenamento de senhas de usuário. São usados por
exemplo no `shadow(5)`. Para gerar um hash compatível com o shadow (por exemplo
para gestão via
[puppet-user](http://git.fluxo.info/?p=puppet-user.git;a=summary)), utilize o
seguinte comando disponível no pacote [whois do
Debian](https://packages.debian.org/stable/whois):

    mkpasswd -m sha-512

Hashes para `htpasswd` são descritos [aqui](http://sarava.fluxo.info/Ajuda/ProtegendoConteudo).

## Exportação de assinaturas locais

    gpg --armor --export-options export-local-sigs --export KEYID

## Forçando entrada de senhas via console no GnuPG

    DISPLAY="" gpg <opcoes>

## Mudando senhas de chaves

    ssh-keygen -p -f ~/.ssh/id_rsa
    gpg --edit-key <ID> edit-key passwd

## Chave OpenPGP de Coletivo

Vide [Chave OpenPGP de Coletivo](role).

## Referências

* [Using ssh-agent with ssh](http://mah.everybody.org/docs/ssh).
* [Using Rsync and SSH ](http://troy.jdmz.net/rsync/index.html).
* [SSH and ssh-agent](http://www.securityfocus.com/infocus/1812).