~ubuntu-branches/debian/stretch/ca-certificates/stretch

« back to all changes in this revision

Viewing changes to sbin/update-ca-certificates

  • Committer: Package Import Robot
  • Author(s): Michael Shuler
  • Date: 2015-04-26 10:37:48 UTC
  • Revision ID: package-import@ubuntu.com-20150426103748-fk25xmwf7isg4jps
Tags: 20150426
* debian/postinst:
  Set mode and group of /usr/local/share/ca-certificates based on current
  /usr/local permissions and ownership.  Closes: #611501
* sbin/update-ca-certificates:
  Allow customisation of the paths used by update-ca-certificates.
  Add an option to set the certs in a directory to the defaults.
  Thanks for the patches, Paul Wise.  Closes: #774059, #774201
  Fix shellcheck warnings and a little indentation.
* sbin/update-ca-certificates.8:
  Correct concatenated file name in man page from certificates.crt to
  ca-certificates.crt.  Closes: #782230
* mozilla/{certdata.txt,nssckbi.h}:
  Update Mozilla certificate authority bundle to version 2.4.
  The following certificate authorities were added (+):
  + "CFCA EV ROOT"
  + "COMODO RSA Certification Authority"
  + "Entrust Root Certification Authority - EC1"
  + "Entrust Root Certification Authority - G2"
  + "GlobalSign ECC Root CA - R4"
  + "GlobalSign ECC Root CA - R5"
  + "IdenTrust Commercial Root CA 1"
  + "IdenTrust Public Sector Root CA 1"
  + "S-TRUST Universal Root CA"
  + "Staat der Nederlanden EV Root CA"
  + "Staat der Nederlanden Root CA - G3"
  + "USERTrust ECC Certification Authority"
  + "USERTrust RSA Certification Authority"  Closes: #762709
  The following certificate authorities were removed (-):
  - "America Online Root Certification Authority 1"
  - "America Online Root Certification Authority 2"
  - "E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi"
  - "GTE CyberTrust Global Root"
  - "Thawte Premium Server CA"
  - "Thawte Server CA"

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
#
5
5
# Copyright (c) 2003 Fumitoshi UKAI <ukai@debian.or.jp>
6
6
# Copyright (c) 2009 Philipp Kern <pkern@debian.org>
7
 
 
7
#
8
8
# This program is free software; you can redistribute it and/or modify
9
9
# it under the terms of the GNU General Public License as published by
10
10
# the Free Software Foundation; either version 2 of the License, or
23
23
 
24
24
verbose=0
25
25
fresh=0
 
26
default=0
 
27
CERTSCONF=/etc/ca-certificates.conf
 
28
CERTSDIR=/usr/share/ca-certificates
 
29
LOCALCERTSDIR=/usr/local/share/ca-certificates
 
30
CERTBUNDLE=ca-certificates.crt
 
31
ETCCERTSDIR=/etc/ssl/certs
 
32
HOOKSDIR=/etc/ca-certificates/update.d
 
33
 
26
34
while [ $# -gt 0 ];
27
35
do
28
36
  case $1 in
30
38
      verbose=1;;
31
39
    --fresh|-f)
32
40
      fresh=1;;
 
41
    --default|-d)
 
42
      default=1
 
43
      fresh=1;;
 
44
    --certsconf)
 
45
      shift
 
46
      CERTSCONF="$1";;
 
47
    --certsdir)
 
48
      shift
 
49
      CERTSDIR="$1";;
 
50
    --localcertsdir)
 
51
      shift
 
52
      LOCALCERTSDIR="$1";;
 
53
    --certbundle)
 
54
      shift
 
55
      CERTBUNDLE="$1";;
 
56
    --etccertsdir)
 
57
      shift
 
58
      ETCCERTSDIR="$1";;
 
59
    --hooksdir)
 
60
      shift
 
61
      HOOKSDIR="$1";;
33
62
    --help|-h|*)
34
63
      echo "$0: [--verbose] [--fresh]"
35
64
      exit;;
37
66
  shift
38
67
done
39
68
 
40
 
CERTSCONF=/etc/ca-certificates.conf
41
 
CERTSDIR=/usr/share/ca-certificates
42
 
LOCALCERTSDIR=/usr/local/share/ca-certificates
43
 
CERTBUNDLE=ca-certificates.crt
44
 
ETCCERTSDIR=/etc/ssl/certs
 
69
if [ ! -s "$CERTSCONF" ]
 
70
then
 
71
  fresh=1
 
72
fi
45
73
 
46
74
cleanup() {
47
75
  rm -f "$TEMPBUNDLE"
67
95
  if ! test -e "$PEM" || [ "$(readlink "$PEM")" != "$CERT" ]
68
96
  then
69
97
    ln -sf "$CERT" "$PEM"
70
 
    echo +$PEM >> "$ADDED"
 
98
    echo "+$PEM" >> "$ADDED"
71
99
  fi
72
100
  # Add trailing newline to certificate, if it is missing (#635570)
73
101
  sed -e '$a\' "$CERT" >> "$TEMPBUNDLE"
79
107
  if test -L "$PEM"
80
108
  then
81
109
    rm -f "$PEM"
82
 
    echo -$PEM >> "$REMOVED"
 
110
    echo "-$PEM" >> "$REMOVED"
83
111
  fi
84
112
}
85
113
 
86
 
cd $ETCCERTSDIR
 
114
cd "$ETCCERTSDIR"
87
115
if [ "$fresh" = 1 ]; then
88
 
  echo -n "Clearing symlinks in $ETCCERTSDIR..."
 
116
  echo "Clearing symlinks in $ETCCERTSDIR..."
89
117
  find . -type l -print | while read symlink
90
118
  do
91
 
    case $(readlink $symlink) in
92
 
      $CERTSDIR*) rm -f $symlink;;
 
119
    case $(readlink "$symlink") in
 
120
      $CERTSDIR*) rm -f "$symlink";;
93
121
    esac
94
122
  done
95
123
  find . -type l -print | while read symlink
96
124
  do
97
 
    test -f $symlink || rm -f $symlink
 
125
    test -f "$symlink" || rm -f "$symlink"
98
126
  done
99
127
  echo "done."
100
128
fi
101
129
 
102
 
echo -n "Updating certificates in $ETCCERTSDIR... "
 
130
echo "Updating certificates in $ETCCERTSDIR..."
 
131
 
 
132
# Add default certificate authorities if requested
 
133
if [ "$default" = 1 ]; then
 
134
  find -L "$CERTSDIR" -type f -name '*.crt' | sort | while read crt
 
135
  do
 
136
    add "$crt"
 
137
  done
 
138
fi
103
139
 
104
140
# Handle certificates that should be removed.  This is an explicit act
105
141
# by prefixing lines in the configuration files with exclamation marks (!).
106
 
sed -n -e '/^$/d' -e 's/^!//p' $CERTSCONF | while read crt
 
142
sed -n -e '/^$/d' -e 's/^!//p' "$CERTSCONF" | while read crt
107
143
do
108
144
  remove "$CERTSDIR/$crt"
109
145
done
110
146
 
111
 
sed -e '/^$/d' -e '/^#/d' -e '/^!/d' $CERTSCONF | while read crt
 
147
sed -e '/^$/d' -e '/^#/d' -e '/^!/d' "$CERTSCONF" | while read crt
112
148
do
113
149
  if ! test -f "$CERTSDIR/$crt"
114
150
  then
151
187
 
152
188
echo "$ADDED_CNT added, $REMOVED_CNT removed; done."
153
189
 
154
 
HOOKSDIR=/etc/ca-certificates/update.d
155
 
echo -n "Running hooks in $HOOKSDIR...."
156
 
VERBOSE_ARG=
157
 
[ "$verbose" = 0 ] || VERBOSE_ARG=--verbose
158
 
eval run-parts $VERBOSE_ARG --test -- $HOOKSDIR | while read hook
159
 
do
160
 
  ( cat $ADDED
161
 
    cat $REMOVED ) | $hook || echo E: $hook exited with code $?.
162
 
done
163
 
echo "done."
 
190
if [ -d "$HOOKSDIR" ]
 
191
then
 
192
 
 
193
  echo "Running hooks in $HOOKSDIR..."
 
194
  VERBOSE_ARG=
 
195
  [ "$verbose" = 0 ] || VERBOSE_ARG="--verbose"
 
196
  eval run-parts "$VERBOSE_ARG" --test -- "$HOOKSDIR" | while read hook
 
197
  do
 
198
    ( cat "$ADDED"
 
199
      cat "$REMOVED" ) | "$hook" || echo "E: $hook exited with code $?."
 
200
  done
 
201
  echo "done."
 
202
 
 
203
fi
164
204
 
165
205
# vim:set et sw=2:
166