diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2017-05-02 16:06:33 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2017-05-02 16:06:33 (GMT) |
commit | 335ca9eb0d2337314cbbec5eb19f9aeea0eaaca7 (patch) | |
tree | 0a0e8d65ee114cb89f58c3159488dd5523123309 /openssl/apps/CA.com | |
parent | a90d8737b83a4a5bb2bf91a9bdf48a3dad4b51fa (diff) | |
download | blt-335ca9eb0d2337314cbbec5eb19f9aeea0eaaca7.zip blt-335ca9eb0d2337314cbbec5eb19f9aeea0eaaca7.tar.gz blt-335ca9eb0d2337314cbbec5eb19f9aeea0eaaca7.tar.bz2 |
initial commit
Diffstat (limited to 'openssl/apps/CA.com')
-rw-r--r-- | openssl/apps/CA.com | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/openssl/apps/CA.com b/openssl/apps/CA.com new file mode 100644 index 0000000..2c0d465 --- /dev/null +++ b/openssl/apps/CA.com @@ -0,0 +1,236 @@ +$! CA - wrapper around ca to make it easier to use ... basically ca requires +$! some setup stuff to be done before you can use it and this makes +$! things easier between now and when Eric is convinced to fix it :-) +$! +$! CA -newca ... will setup the right stuff +$! CA -newreq ... will generate a certificate request +$! CA -sign ... will sign the generated request and output +$! +$! At the end of that grab newreq.pem and newcert.pem (one has the key +$! and the other the certificate) and cat them together and that is what +$! you want/need ... I'll make even this a little cleaner later. +$! +$! +$! 12-Jan-96 tjh Added more things ... including CA -signcert which +$! converts a certificate to a request and then signs it. +$! 10-Jan-96 eay Fixed a few more bugs and added the SSLEAY_CONFIG +$! environment variable so this can be driven from +$! a script. +$! 25-Jul-96 eay Cleaned up filenames some more. +$! 11-Jun-96 eay Fixed a few filename missmatches. +$! 03-May-96 eay Modified to use 'openssl cmd' instead of 'cmd'. +$! 18-Apr-96 tjh Original hacking +$! +$! Tim Hudson +$! tjh@cryptsoft.com +$! +$! +$! default ssleay.cnf file has setup as per the following +$! demoCA ... where everything is stored +$ +$ IF F$TYPE(SSLEAY_CONFIG) .EQS. "" THEN SSLEAY_CONFIG := SSLLIB:SSLEAY.CNF +$ +$ DAYS = "-days 365" +$ REQ = openssl + " req " + SSLEAY_CONFIG +$ CA = openssl + " ca " + SSLEAY_CONFIG +$ VERIFY = openssl + " verify" +$ X509 = openssl + " x509" +$ PKCS12 = openssl + " pkcs12" +$ echo = "write sys$Output" +$ RET = 1 +$! +$! 2010-12-20 SMS. +$! Use a concealed logical name to reduce command line lengths, to +$! avoid DCL errors on VAX: +$! %DCL-W-TKNOVF, command element is too long - shorten +$! (Path segments like "openssl-1_0_1-stable-SNAP-20101217" accumulate +$! quickly.) +$! +$ CATOP = F$PARSE( F$ENVIRONMENT( "DEFAULT"), "[]")- "].;"+ ".demoCA.]" +$ define /translation_attributes = concealed CATOP 'CATOP' +$! +$ on error then goto clean_up +$ on control_y then goto clean_up +$! +$ CAKEY = "CATOP:[private]cakey.pem" +$ CACERT = "CATOP:[000000]cacert.pem" +$ +$ __INPUT := SYS$COMMAND +$! +$ i = 1 +$opt_loop: +$ if i .gt. 8 then goto opt_loop_end +$ +$ prog_opt = F$EDIT(P'i',"lowercase") +$ +$ IF (prog_opt .EQS. "?" .OR. prog_opt .EQS. "-h" .OR. prog_opt .EQS. "-help") +$ THEN +$ echo "usage: CA -newcert|-newreq|-newca|-sign|-verify" +$ goto clean_up +$ ENDIF +$! +$ IF (prog_opt .EQS. "-input") +$ THEN +$ ! Get input from somewhere other than SYS$COMMAND +$ i = i + 1 +$ __INPUT = P'i' +$ GOTO opt_loop_continue +$ ENDIF +$! +$ IF (prog_opt .EQS. "-newcert") +$ THEN +$ ! Create a certificate. +$ DEFINE /USER_MODE SYS$INPUT '__INPUT' +$ REQ -new -x509 -keyout newreq.pem -out newreq.pem 'DAYS' +$ RET=$STATUS +$ echo "Certificate (and private key) is in newreq.pem" +$ GOTO opt_loop_continue +$ ENDIF +$! +$ IF (prog_opt .EQS. "-newreq") +$ THEN +$ ! Create a certificate request +$ DEFINE /USER_MODE SYS$INPUT '__INPUT' +$ REQ -new -keyout newreq.pem -out newreq.pem 'DAYS' +$ RET=$STATUS +$ echo "Request (and private key) is in newreq.pem" +$ GOTO opt_loop_continue +$ ENDIF +$! +$ IF (prog_opt .EQS. "-newca") +$ THEN +$ ! If explicitly asked for or it doesn't exist then setup the directory +$ ! structure that Eric likes to manage things. +$ IF F$SEARCH( "CATOP:[000000]serial.") .EQS. "" +$ THEN +$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[000000] +$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[certs] +$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[crl] +$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[newcerts] +$ CREATE /DIRECTORY /PROTECTION=OWNER:RWED CATOP:[private] +$ +$ OPEN /WRITE ser_file CATOP:[000000]serial. +$ WRITE ser_file "01" +$ CLOSE ser_file +$ APPEND /NEW_VERSION NL: CATOP:[000000]index.txt +$ +$ ! The following is to make sure access() doesn't get confused. It +$ ! really needs one file in the directory to give correct answers... +$ COPY NLA0: CATOP:[certs].; +$ COPY NLA0: CATOP:[crl].; +$ COPY NLA0: CATOP:[newcerts].; +$ COPY NLA0: CATOP:[private].; +$ ENDIF +$! +$ IF F$SEARCH( CAKEY) .EQS. "" +$ THEN +$ READ '__INPUT' FILE - + /PROMPT="CA certificate filename (or enter to create): " +$ IF (FILE .NES. "") .AND. (F$SEARCH(FILE) .NES. "") +$ THEN +$ COPY 'FILE' 'CAKEY' +$ RET=$STATUS +$ ELSE +$ echo "Making CA certificate ..." +$ DEFINE /USER_MODE SYS$INPUT '__INPUT' +$ REQ -new -x509 -keyout 'CAKEY' -out 'CACERT' 'DAYS' +$ RET=$STATUS +$ ENDIF +$ ENDIF +$ GOTO opt_loop_continue +$ ENDIF +$! +$ IF (prog_opt .EQS. "-pkcs12") +$ THEN +$ i = i + 1 +$ cname = P'i' +$ IF cname .EQS. "" THEN cname = "My certificate" +$ PKCS12 -in newcert.pem -inkey newreq.pem -certfile 'CACERT' - + -out newcert.p12 -export -name "''cname'" +$ RET=$STATUS +$ goto clean_up +$ ENDIF +$! +$ IF (prog_opt .EQS. "-xsign") +$ THEN +$! +$ DEFINE /USER_MODE SYS$INPUT '__INPUT' +$ CA -policy policy_anything -infiles newreq.pem +$ RET=$STATUS +$ GOTO opt_loop_continue +$ ENDIF +$! +$ IF ((prog_opt .EQS. "-sign") .OR. (prog_opt .EQS. "-signreq")) +$ THEN +$! +$ DEFINE /USER_MODE SYS$INPUT '__INPUT' +$ CA -policy policy_anything -out newcert.pem -infiles newreq.pem +$ RET=$STATUS +$ type newcert.pem +$ echo "Signed certificate is in newcert.pem" +$ GOTO opt_loop_continue +$ ENDIF +$! +$ IF (prog_opt .EQS. "-signcert") +$ THEN +$! +$ echo "Cert passphrase will be requested twice - bug?" +$ DEFINE /USER_MODE SYS$INPUT '__INPUT' +$ X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem +$ DEFINE /USER_MODE SYS$INPUT '__INPUT' +$ CA -policy policy_anything -out newcert.pem -infiles tmp.pem +y +y +$ type newcert.pem +$ echo "Signed certificate is in newcert.pem" +$ GOTO opt_loop_continue +$ ENDIF +$! +$ IF (prog_opt .EQS. "-verify") +$ THEN +$! +$ i = i + 1 +$ IF (p'i' .EQS. "") +$ THEN +$ DEFINE /USER_MODE SYS$INPUT '__INPUT' +$ VERIFY "-CAfile" 'CACERT' newcert.pem +$ ELSE +$ j = i +$ verify_opt_loop: +$ IF j .GT. 8 THEN GOTO verify_opt_loop_end +$ IF p'j' .NES. "" +$ THEN +$ DEFINE /USER_MODE SYS$INPUT '__INPUT' +$ __tmp = p'j' +$ VERIFY "-CAfile" 'CACERT' '__tmp' +$ tmp=$STATUS +$ IF tmp .NE. 0 THEN RET=tmp +$ ENDIF +$ j = j + 1 +$ GOTO verify_opt_loop +$ verify_opt_loop_end: +$ ENDIF +$ +$ GOTO opt_loop_end +$ ENDIF +$! +$ IF (prog_opt .NES. "") +$ THEN +$! +$ echo "Unknown argument ''prog_opt'" +$ RET = 3 +$ goto clean_up +$ ENDIF +$ +$opt_loop_continue: +$ i = i + 1 +$ GOTO opt_loop +$ +$opt_loop_end: +$! +$clean_up: +$! +$ if f$trnlnm( "CATOP", "LNM$PROCESS") .nes. "" then - + deassign /process CATOP +$! +$ EXIT 'RET' |