blob: c959f402ef45098db9ae746f5e3cd7da62cb8e61 (
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
#!/bin/sh
#
# BEGIN COPYRIGHT BLOCK
# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
# Copyright (C) 2005 Red Hat, Inc.
# All rights reserved.
# END COPYRIGHT BLOCK
#
#
# Usage ns-keygen password_file fully_qualified_hostname
# Example:
# ./ns-keygen ../password.txt myhost.redhat.com
#
# Assumes that NSHOME is Set
# if NSHOME is not set, it will be derived from the path of this script, which is
# usually NSHOME/bin/slapd/admin/bin
if [ $# -ge 2 ]
then
passwd_file="$1"
certDN="$2"
else
echo "ERROR:Incorrect Usage: $0 password_file certDN"
exit
fi
if [ ! "$NSHOME" ]; then
fullpath=`pwd`
if echo $0 | grep \^/ > /dev/null 2>&1 ; then # is absolute
fullpath=`dirname $0`
else # is a relative path - could be ./ or ../ or something else
base=`basename $0`
if [ "$base" != $0 ]; then # e.g. ns-keygen bare from that directory
savedir=$fullpath
cd `dirname $0`
fullpath=`pwd`
cd $savedir
fi
fi
# is $0 relative or absolute path?
NSHOME=`echo $fullpath | sed -e s@/bin/slapd/admin/bin@@g`
fi
# set the LD_LIBRARY_PATH - required for the cert tools
TOOL_PATH=$NSHOME/bin/slapd/admin/bin ; export TOOL_PATH
# for HPUX
SHLIB_PATH=$TOOL_PATH:$TOOL_PATH/../lib:$TOOL_PATH/../../lib:$TOOL_PATH/../../../lib:$TOOL_PATH/../../../../lib:$SHLIB_PATH ; export SHLIB_PATH
# for other unix
LD_LIBRARY_PATH=$TOOL_PATH:$TOOL_PATH/../lib:$TOOL_PATH/../../lib:$TOOL_PATH/../../../lib:$TOOL_PATH/../../../../lib:$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH
#echo password file name is: $passwd_file
#echo certDN is: $certDN
rm -f key3.db key4.db cert7.db cert8.db secmodule.db secmod.db random.dat keyid.dat
# Check for password file
#
# Set umask for best security
#
umask 077
#
# Create some "random" data.
#
ps -ale >>random.dat
date >>random.dat
netstat -a >>random.dat
if [ ! -s "$passwd_file" ]
then
echo "Error:Password file is missing."
exit 1
fi
#
# Set the key database password
#
$TOOL_PATH/certutil -W -d . -f "$passwd_file"
RC=$?
if [ $RC != 0 ]
then
echo "Error:Unable to set the key database password."
exit 1
fi
#
# Create and sign a self-signed certificate for this
# server using the server name
#
$TOOL_PATH/certutil -S -s "$certDN" -x -t u,, \
-v 60 -d . -n Server-Cert -f "$passwd_file" -z random.dat
RC=$?
if [ $RC != 0 ]
then
echo "Error:Unable to create the cert."
exit 1
fi
hostname=`uname -n`
#
# Copy the key/cert db & password file to the correct place.
#
keydb=key3.db
if [ -f key4.db ] ; then
keydb=key4.db
fi
if [ -f $NSHOME/alias/slapd-$hostname-$keydb ]; then
echo "Found existing key database - copying to $NSHOME/alias/slapd-$hostname-$keydb.bak"
cp $NSHOME/alias/slapd-$hostname-$keydb $NSHOME/alias/slapd-$hostname-$keydb.bak
if [ ! -f $NSHOME/alias/slapd-$hostname-$keydb.orig ] ; then
cp $NSHOME/alias/slapd-$hostname-$keydb $NSHOME/alias/slapd-$hostname-$keydb.orig
fi
fi
cp $keydb $NSHOME/alias/slapd-$hostname-$keydb
RC=$?
if [ $RC != 0 ]
then
echo "Error:Key Database $keydb could not be copied"
exit 1
fi
certdb=cert7.db
if [ -f cert8.db ] ; then
certdb=cert8.db
fi
if [ -f $NSHOME/alias/slapd-$hostname-$certdb ]; then
echo "Found existing cert database - copying to $NSHOME/alias/slapd-$hostname-$certdb.bak"
cp $NSHOME/alias/slapd-$hostname-$certdb $NSHOME/alias/slapd-$hostname-$certdb.bak
if [ ! -f $NSHOME/alias/slapd-$hostname-$certdb.orig ] ; then
cp $NSHOME/alias/slapd-$hostname-$certdb $NSHOME/alias/slapd-$hostname-$certdb.orig
fi
fi
cp $certdb $NSHOME/alias/slapd-$hostname-$certdb
RC=$?
if [ $RC != 0 ]
then
echo "Error:Cert Database $certdb could not be copied"
exit 1
fi
# create and copy pin file
passwd=`cat $passwd_file`
if [ -f $NSHOME/alias/slapd-$hostname-pin.txt ]; then
echo "Found existing pin file - copying to $NSHOME/alias/slapd-$hostname-pin.txt.bak"
cp $NSHOME/alias/slapd-$hostname-pin.txt $NSHOME/alias/slapd-$hostname-pin.txt.bak
if [ ! -f $NSHOME/alias/slapd-$hostname-pin.txt.orig ]; then
cp $NSHOME/alias/slapd-$hostname-pin.txt $NSHOME/alias/slapd-$hostname-pin.txt.orig
fi
fi
echo "Internal (Software) Token:$passwd" > $NSHOME/alias/slapd-$hostname-pin.txt
RC=$?
if [ $RC != 0 ]
then
echo "Error:password file could not be copied"
exit 1
fi
# Test the new location for the files.
#
# Cleanup
rm -f random.dat
#
# End
#
|