123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #! /usr/bin/env bash
- #
- # Licensed to the Apache Software Foundation (ASF) under one
- # or more contributor license agreements. See the NOTICE file
- # distributed with this work for additional information
- # regarding copyright ownership. The ASF licenses this file
- # to you under the Apache License, Version 2.0 (the
- # "License"); you may not use this file except in compliance
- # with the License. You may obtain a copy of the License at
- #
- # https://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing,
- # software distributed under the License is distributed on an
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- # KIND, either express or implied. See the License for the
- # specific language governing permissions and limitations
- # under the License.
- #
- #
- # This script cleans up old transaction logs and snapshots
- #
- #
- # If this scripted is run out of /usr/bin or some other system bin directory
- # it should be linked to and not copied. Things like java jar files are found
- # relative to the canonical path of this script.
- #
- # determining the domain name in the certificates:
- # - use the first commandline argument, if present
- # - if not, then use the fully qualified domain name
- # - if `hostname` command fails, fall back to zookeeper.apache.org
- FQDN=$(hostname -f)
- FQDN=${1:-$FQDN}
- FQDN=${FQDN:-"zookeeper.apache.org"}
- # Generate the root key
- openssl genrsa -out rootkey.pem 2048
- #Generate the root Cert
- openssl req -x509 -new -key rootkey.pem -out root.crt -config <(
- cat <<-EOF
- [ req ]
- default_bits = 2048
- prompt = no
- default_md = sha256
- distinguished_name = dn
- [ dn ]
- C = US
- ST = California
- L = San Francisco
- O = ZooKeeper
- emailAddress = dev@$FQDN
- CN = $FQDN
- EOF
- )
- #Generate Client Key
- openssl genrsa -out clientkey.pem 2048
- #Generate Client Cert
- openssl req -new -key clientkey.pem -out client.csr -config <(
- cat <<-EOF
- [ req ]
- default_bits = 2048
- prompt = no
- default_md = sha256
- distinguished_name = dn
- [ dn ]
- C = US
- ST = California
- L = San Francisco
- O = ZooKeeper
- emailAddress = dev@$FQDN
- CN = $FQDN
- EOF
- )
- openssl x509 -req -in client.csr -CA root.crt -CAkey rootkey.pem -CAcreateserial -days 3650 -out client.crt
- #Export in pkcs12 format
- openssl pkcs12 -export -in client.crt -inkey clientkey.pem -out client.pkcs12 -password pass:password
- # Import Keystore in JKS
- keytool -importkeystore -srckeystore client.pkcs12 -destkeystore client.jks -srcstoretype pkcs12 -srcstorepass password -deststorepass password
- ############################################################
- #Generate Server key
- openssl genrsa -out serverkey.pem 2048
- #Generate Server Cert
- openssl req -new -key serverkey.pem -out server.csr -config <(
- cat <<-EOF
- [ req ]
- default_bits = 2048
- prompt = no
- default_md = sha256
- distinguished_name = dn
- [ dn ]
- C = US
- ST = California
- L = San Francisco
- O = ZooKeeper
- emailAddress = dev@$FQDN
- CN = $FQDN
- EOF
- )
- openssl x509 -req -in server.csr -CA root.crt -CAkey rootkey.pem -CAcreateserial -days 3650 -out server.crt
- #Export in pkcs12 format
- openssl pkcs12 -export -in server.crt -inkey serverkey.pem -out server.pkcs12 -password pass:password
- # Import Keystore in JKS
- keytool -importkeystore -srckeystore server.pkcs12 -destkeystore server.jks -srcstoretype pkcs12 -srcstorepass password -deststorepass password
- keytool -importcert -keystore server.jks -file root.crt -storepass password -noprompt
- keytool -importcert -alias ca -file root.crt -keystore clienttrust.jks -storepass password -noprompt
- keytool -importcert -alias clientcert -file client.crt -keystore clienttrust.jks -storepass password -noprompt
- keytool -importcert -alias ca -file root.crt -keystore servertrust.jks -storepass password -noprompt
- keytool -importcert -alias servercert -file server.crt -keystore servertrust.jks -storepass password -noprompt
|