/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to debian/mandos-client.postinst

  • Committer: Teddy Hogeborn
  • Date: 2019-02-10 03:50:20 UTC
  • Revision ID: teddy@recompile.se-20190210035020-nttr1tybgwwixueu
Show debconf note about new TLS key IDs

If mandos-client did not see TLS keys and had to create them, or if
mandos sees GnuTLS version 3.6.6 or later, show an important notice on
package installation about the importance of adding the new key_id
options to clients.conf on the Mandos server.

* debian/control (Package: mandos, Package: mandos-client): Depend on
                                                            debconf.
* debian/mandos-client.lintian-overrides: Override warnings.
* debian/mandos-client.postinst (create_keys): Show notice if new TLS
                                               key files were created.
* debian/mandos-client.templates: New.
* debian/mandos.lintian-overrides: Override warnings.
* debian/mandos.postinst (configure): If GnuTLS 3.6.6 or later is
                                      detected, show an important
                                      notice (once) about the new
                                      key_id option required in
                                      clients.conf.
* debian/mandos.templates: New.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# If prerm fails during replacement due to conflict:
16
16
#       <postinst> abort-remove in-favour <new-package> <version>
17
17
 
 
18
. /usr/share/debconf/confmodule
 
19
 
18
20
set -e
19
21
 
20
22
# Update the initial RAM file system image
50
52
    fi
51
53
}
52
54
 
53
 
# Create client key pair
54
 
create_key(){
55
 
    if [ -r /etc/keys/mandos/pubkey.txt \
56
 
        -a -r /etc/keys/mandos/seckey.txt ]; then
57
 
        return 0
58
 
    fi
59
 
    mandos-keygen
60
 
    gpg-connect-agent KILLAGENT /bye || :
 
55
# Create client key pairs
 
56
create_keys(){
 
57
    # If the OpenPGP key files do not exist, generate all keys using
 
58
    # mandos-keygen
 
59
    if ! [ -r /etc/keys/mandos/pubkey.txt \
 
60
              -a -r /etc/keys/mandos/seckey.txt ]; then
 
61
        mandos-keygen
 
62
        gpg-connect-agent KILLAGENT /bye || :
 
63
        return 0
 
64
    fi
 
65
 
 
66
    # If the TLS keys already exists, do nothing
 
67
    if [ -r /etc/keys/mandos/tls-privkey.pem \
 
68
            -a -r /etc/keys/mandos/tls-pubkey.pem ]; then
 
69
        return 0
 
70
    fi
 
71
 
 
72
    # If this is an upgrade from an old installation, the TLS keys
 
73
    # will not exist; create them.
 
74
 
 
75
    # First try certtool from GnuTLS
 
76
    if ! certtool --generate-privkey --password='' \
 
77
         --outfile /etc/keys/mandos/tls-privkey.pem \
 
78
         --sec-param ultra --key-type=ed25519 --pkcs8 --no-text \
 
79
         2>/dev/null; then
 
80
        # Otherwise try OpenSSL
 
81
        if ! openssl genpkey -algorithm X25519 \
 
82
             -out /etc/keys/mandos/tls-privkey.pem; then
 
83
            rm --force /etc/keys/mandos/tls-privkey.pem
 
84
            # None of the commands succeded; give up
 
85
            return 1
 
86
        fi
 
87
    fi
 
88
 
 
89
    local umask=$(umask)
 
90
    umask 077
 
91
    # First try certtool from GnuTLS
 
92
    if ! certtool --password='' \
 
93
         --load-privkey=/etc/keys/mandos/tls-privkey.pem \
 
94
         --outfile=/etc/keys/mandos/tls-pubkey.pem --pubkey-info \
 
95
         --no-text 2>/dev/null; then
 
96
        # Otherwise try OpenSSL
 
97
        if ! openssl pkey -in /etc/keys/mandos/tls-privkey.pem \
 
98
             -out /etc/keys/mandos/tls-pubkey.pem -pubout; then
 
99
            rm --force /etc/keys/mandos/tls-pubkey.pem
 
100
            # None of the commands succeded; give up
 
101
            umask $umask
 
102
            return 1
 
103
        fi
 
104
    fi
 
105
    umask $umask
 
106
 
 
107
    key_id=$(mandos-keygen --passfile=/dev/null \
 
108
                 | grep --regexp="^key_id[ =]")
 
109
 
 
110
    db_version 2.0
 
111
    db_fset mandos-client/key_id seen false
 
112
    db_reset mandos-client/key_id
 
113
    db_subst mandos-client/key_id key_id $key_id
 
114
    db_input critical mandos-client/key_id || true
 
115
    db_go
 
116
    db_stop
61
117
}
62
118
 
63
119
create_dh_params(){
88
144
case "$1" in
89
145
    configure)
90
146
        add_mandos_user "$@"
91
 
        create_key "$@"
 
147
        create_keys "$@"
92
148
        create_dh_params "$@" || :
93
149
        update_initramfs "$@"
94
150
        if dpkg --compare-versions "$2" lt-nl "1.7.10-1"; then