15 if not defined PARAM goto opt_end
16 if %1==-h goto opt_fqdn
17 if %1==-e goto opt_entityid
18 if %1==-y goto opt_years
19 if %1==-f goto opt_force
23 if exist "%PREFIX%sp-key.pem" goto protect
24 if exist "%PREFIX%sp-cert.pem" goto protect
26 if not defined YEARS set YEARS=10
27 set /a DAYS=%YEARS%*365
29 if not defined FQDN goto guess_fqdn
32 set PATH=%PREFIX%..\..\lib;%PREFIX%..\..\bin
33 set CNF="%PREFIX%sp-cert.cnf"
34 echo # OpenSSL configuration file for creating sp-cert.pem >%CNF%
36 echo prompt=no >>%CNF%
37 echo default_bits=2048 >>%CNF%
38 echo encrypt_key=no >>%CNF%
39 echo default_md=sha1 >>%CNF%
40 echo distinguished_name=dn >>%CNF%
41 echo # PrintableStrings only >>%CNF%
42 echo string_mask=MASK:0002 >>%CNF%
43 echo x509_extensions=ext >>%CNF%
45 echo CN=%FQDN% >>%CNF%
47 if defined ENTITYID (echo subjectAltName=DNS:%FQDN%,URI:%ENTITYID% >>%CNF%) else (echo subjectAltName=DNS:%FQDN% >>%CNF%)
48 echo subjectKeyIdentifier=hash >>%CNF%
49 %PREFIX%..\..\bin\openssl.exe req -config %PREFIX%sp-cert.cnf -new -x509 -days %DAYS% -keyout %PREFIX%sp-key.pem -out %PREFIX%sp-cert.pem
54 echo The files sp-key.pem and/or sp-cert.pem already exist!
55 echo Use -f option to force recreation of keypair.
59 if exist "%PREFIX%sp-key.pem" del "%PREFIX%sp-key.pem"
60 if exist "%PREFIX%sp-cert.pem" del "%PREFIX%sp-cert.pem"
83 echo usage: keygen [-h hostname for cert] [-y years to issue cert] [-e entityID to embed in cert]
87 for /F "tokens=2 delims=:" %%i in ('"ipconfig /all | findstr /c:"Primary DNS Suffix" /c:"Primary Dns Suffix""') do set TEMP_DOMAIN_NAME=%%i
88 if defined TEMP_DOMAIN_NAME set FQDN=%TEMP_DOMAIN_NAME: =%
90 if defined USERDNSDOMAIN set FQDN=%USERDNSDOMAIN%
92 for /F %%i in ('hostname') do set HOST=%%i
93 if defined FQDN (set FQDN=%HOST%.%FQDN%) else (set FQDN=%HOST%)
96 for /F %%i in ('dir /b/l %FQDN%') do set FQDN=%%i