Advertisement
Guest User

Untitled

a guest
Oct 4th, 2017
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Winbatch 11.14 KB | None | 0 0
  1. @REM #######################################
  2. @REM ############ CONFGURATION #############
  3. @REM #######################################
  4. @
  5. @rem enable custom OpenVPN path usage ["default" | "custom"]
  6. @set rfid.ovpn.use_path=custom
  7. @
  8. @rem path to your openvpn non standard directory (ATTENTION! no trailing slashes might be placed)
  9. @set rfid.ovpn.path.custom=C:\Documents and Settings\dafanasiev\Рабочий стол\bin\OpenVPN
  10. @set rfid.ovpn.path.1=C:\Documents and Settings\dafanasiev\Рабочий стол\bin\OpenVPN
  11. @
  12. @rem does script should check required files presence & versions
  13. @set rfid.ovpn.check_bins=yes
  14. @
  15. @rem create list of certificates [boolean option]
  16. @set rfid.ovpn.crt.multigen=yes
  17. @set rfid.ovpn.crt.mgen_start=0
  18. @set rfid.ovpn.crt.mgen_stop=30
  19. @
  20. @rem automate client number to subject CN option and output files names
  21. @set rfid.ovpn.crt.mgen_autonum=yes
  22. @
  23. @rem enable this option if certificate should be signed, use "1" or "yes" without quotes
  24. @set rfid.ovpn.crt.use_sign=yes
  25. @
  26. @rem --- CERTFICATE subject options ---
  27. @    set rfid.ovpn.crt.CN.custom=
  28. @
  29. @rem trigger, enables using custom certificate subject options
  30. @    set rfid.ovpn.crt.more_opts=
  31. @
  32. @rem RDN customization, e.g. CN -> CommonName for certificates
  33. @rem RDN synthax: /C=CountryName/ST=Providence/..
  34. @    set rfid.ovpn.crt.C.custom=
  35. @    set rfid.ovpn.crt.ST.custom=
  36. @    set rfid.ovpn.crt.L.custom=
  37. @    set rfid.ovpn.crt.O.custom=
  38. @    set rfid.ovpn.crt.OU.custom=
  39. @    set rfid.ovpn.crt.EML.custom=
  40.  
  41. @rem verbosity level
  42. @    set rfid.ovpn.ui.debug=0
  43.  
  44.  
  45. @REM #######################################
  46. @REM ############# PREPARING ###############
  47. @REM #######################################
  48. @echo off
  49. echo.
  50. chcp 1251>nul
  51. setlocal enabledelayedexpansion
  52. set rfid.ovpn.cd=%cd%
  53.  
  54. rem Ctrl+C fix
  55. rem if not "%1" == "exec" (
  56. rem         cmd /c "echo y | %0 exec %1"
  57. rem         goto :EOF
  58. rem )
  59. rem shift
  60.  
  61. rem defaults
  62.     set rfid.ovpn.path.default=%programfiles%\OpenVPN
  63.     set rfid.ovpn.keys.path=keys
  64.     set rfid.ovpn.ccd.path=config\ccd
  65. rem static openssl options only
  66.     set rfid.ovpn.ossl.lpath=bin\openssl.exe
  67.     set rfid.ovpn.ossl.gendir=easy-rsa
  68.     set rfid.ovpn.ossl.genreq_opts=req -config openssl.cnf -days 3650 -nodes -new -multivalue-rdn
  69.     set rfid.ovpn.ossl.gencrt_opts=ca -days 3650 -config openssl.cnf
  70. rem OpenVPN CCD configuration
  71.     set rfid.ovpn.ccd.net.default=10.10.1.
  72.  
  73. rem cert req opts:     -keyout %rfid.ovpn.keys.path%\[client_name].key -out %rfid.ovpn.keys.path%\[client_name].csr -subj "/C=CountryName/ST=Providence/L=CityName/CN=[client_name]"
  74. rem cert dynamic opts: -out %rfid.ovpn.keys.path%\%1.crt -in %rfid.ovpn.keys.path%\%1.csr
  75.  
  76.  
  77. rem RDN certificate subject defaults
  78.     set rfid.ovpn.crt.CN.default=client
  79.     set rfid.ovpn.crt.C.default=RU
  80.     set rfid.ovpn.crt.ST.default=NW
  81.     set rfid.ovpn.crt.L.default=Saint-Petersburg
  82.     set rfid.ovpn.crt.O.default=Radiofid
  83.     set rfid.ovpn.crt.OU.default=development
  84.     set rfid.ovpn.crt.EML.default=support@radiofid.ru
  85.  
  86. REM ############ proc start ###############
  87.  
  88. echo    iRZ® OpenVPN certificate generation ^& client configuration script
  89. echo  =======================================================================
  90. echo    Author: Afanasiev Danila
  91. echo    iRZ® - is registred trademark of RADIOFID Corp. All rights reserved.
  92. echo  -----------------------------------------------------------------------
  93. echo.
  94.  
  95. rem applying configured paths
  96. if "%1" == "" (
  97.     if "%rfid.ovpn.use_path%" == "" set rfid.ovpn.use_path=default
  98.     set rfid.ovpn.path=!rfid.ovpn.path.%rfid.ovpn.use_path%!
  99. ) else (
  100.     set rfid.ovpn.path=!rfid.ovpn.path.%1!
  101. )
  102.  
  103. rem checking selected path to OpenVPN directory
  104. echo   [i] checking %rfid.ovpn.use_path% OpenVPN path
  105. if not exist "!rfid.ovpn.path!" (
  106.     if "%rfid.ovpn.use_path%" == "custom" (
  107.         if "%rfid.ovpn.path%" == "" (
  108.             set /p rfid.runvar=  [?] undefined custom path, use default OpenVPN path instead? [y/n]
  109.             if "!rfid.runvar!" == "y" (
  110.                 echo   [i] checking default OpenVPN path
  111.                 set rfid.ovpn.path=%rfid.ovpn.path.default%
  112.                 if exist "!rfid.ovpn.path!" goto cert_prep
  113.                 echo       [E] directory "!rfid.ovpn.path!" not found
  114.                 echo.
  115.             )
  116.         )
  117.     ) else (
  118.         echo       [E] directory "%rfid.ovpn.path%" not found
  119.         echo.
  120.     )
  121.     echo   [E] unable to continue, install OpenVPN first, or verify option
  122.     echo       'rfid.ovpn.use_path', acceptable values: 'default', 'custom'
  123.     echo   [i] if you are selected custom path you also must set option
  124.     echo       'rfid.ovpn.path.custom' with real path to your OpenVPN binaries
  125.     echo.
  126.     goto unload
  127. ) else (
  128.     if "%rfid.ovpn.check_bins%" == "yes" (
  129.         goto check_bins
  130.     ) else if "%rfid.ovpn.check_bins%" == "1" (
  131.         goto check_bins
  132.     )
  133.     echo   [i] binaries check disabled
  134.     goto cert_prep
  135. )
  136.  
  137. REM ####### checking binaries ##########
  138. :check_bins
  139. echo   [#] checking for neccessary binaries ^& directories..
  140. echo.
  141. rem echo rfid.ovpn.path = %rfid.ovpn.path%
  142. rem echo.
  143. if exist "%rfid.ovpn.path%\bin\openssl.exe" (
  144.     set rfid.ovpn.ossl.path=%rfid.ovpn.path%\%rfid.ovpn.ossl.lpath%
  145.     rem version info
  146.     rem         for /F "delims=" %%i in ('"dir /b"') do echo i - %%i
  147.     rem         set v=%%~i
  148.     rem         echo v - %v%
  149.     echo         * openssl.exe   - [OK]
  150.     if exist "%rfid.ovpn.path%\%rfid.ovpn.ossl.gendir%" (
  151.         echo         * easy-rsa\         -  [OK]
  152.         goto cert_prep
  153.     ) else (
  154.         echo         * easy-rsa\         - [NOT FOUND]
  155.     )
  156. ) else (
  157.     echo         * openssl.exe     -      [NOT FOUND]
  158. )
  159. echo.
  160. echo   [E] unable to continue, seems your OpenVPN installation is corrupted,
  161. echo       please reinstall OpenVPN first and try again
  162. goto unload
  163.  
  164.  
  165.  
  166. REM ### certificate preparing section ###
  167. :cert_prep
  168. echo.
  169. echo    ^<^<^< Certificate user information ^>^>^>
  170. echo    ------------------------------------
  171.  
  172. rem setting Common Name
  173. if "%rfid.ovpn.crt.CN.custom%" == "" (
  174.     set rfid.runvar=
  175.     set /p rfid.runvar=  [?] Common Name option not set, enter name [%rfid.ovpn.crt.CN.default%]:
  176.     if "!rfid.runvar!" == "" (
  177.         echo   [i] using default CN
  178.         set rfid.ovpn.crt.CN=%rfid.ovpn.crt.CN.default%
  179.     ) else (
  180.         set rfid.ovpn.crt.CN=!rfid.runvar!
  181.     )
  182. ) else (
  183.     set rfid.ovpn.crt.CN=%rfid.ovpn.crt.CN.custom%
  184. )
  185.  
  186. rem customize additional certificate options [TODO, currently unsupported]
  187. if "%rfid.ovpn.crt.more_opts%" == "1" (
  188.     goto more_cert_opts
  189. ) else if "%rfid.ovpn.crt.more_opts%" == "yes" (
  190.     goto more_cert_opts
  191. )
  192.  
  193. rem apply default RDNs
  194. echo   [i] using default certificate subject RDN
  195. set rfid.ovpn.crt.C=%rfid.ovpn.crt.C.default%
  196. set rfid.ovpn.crt.ST=%rfid.ovpn.crt.ST.default%
  197. set rfid.ovpn.crt.L=%rfid.ovpn.crt.L.default%
  198. set rfid.ovpn.crt.O=%rfid.ovpn.crt.O.default%
  199. set rfid.ovpn.crt.OU=%rfid.ovpn.crt.OU.default%
  200. set rfid.ovpn.crt.EML=%rfid.ovpn.crt.EML.default%
  201. set rfid.ovpn.crt.rdn=/C=%rfid.ovpn.crt.C%/ST=%rfid.ovpn.crt.ST%/L=%rfid.ovpn.crt.L%/O=%rfid.ovpn.crt.O%/OU=%rfid.ovpn.crt.OU%/CN=%rfid.ovpn.crt.CN%
  202. if "%rfid.ovpn.ui.debug%" GEQ "1" (
  203.     goto sh_opts
  204. ) else (
  205.     goto cert_gen
  206. )
  207.  
  208.  
  209.  
  210. :more_cert_opts
  211. set rfid.ovpn.crt.CN=%rfid.ovpn.crt.CN.custom%
  212.  
  213.  
  214.  
  215. :sh_opts
  216. echo.
  217. echo     • CommonName is set to         '%rfid.ovpn.crt.CN%'
  218. echo     • Country is set to            '%rfid.ovpn.crt.C%'
  219. echo     • Providence is set to         '%rfid.ovpn.crt.ST%'
  220. echo     • City is set to               '%rfid.ovpn.crt.L%'
  221. echo     • Organization is set to       '%rfid.ovpn.crt.O%'
  222. echo     • Organization Unit is set to  '%rfid.ovpn.crt.OU%'
  223. echo     • Support E-mail is set to     '%rfid.ovpn.crt.EML%'
  224. goto cert_gen
  225.  
  226.  
  227.  
  228. REM ######## generation section ############
  229. :cert_gen
  230. echo.
  231. echo    ^<^<^< Certificate generation ^>^>^>
  232. echo    ------------------------------
  233. cd /d %rfid.ovpn.path%
  234. if "%rfid.ovpn.ui.debug%" GEQ "1" (
  235.     if not errorlevel == 1 (
  236.         echo   [D] current directory changed to '%rfid.ovpn.path%'
  237.     ) else (
  238.         echo   [E] unable to enter OpenVPN directory, please check if it was
  239.         echo       deleted during script execution befor this call
  240.     )
  241. )
  242. echo   [i] using following RDN map:
  243. echo.
  244. echo       %rfid.ovpn.crt.rdn%
  245. echo.
  246. echo   [*] assembling OpenSSL call
  247.  
  248. rem updating RDN because CRT.MGEN enabled
  249. if "%rfid.ovpn.crt.multigen%" == "yes" (
  250.     goto cert_mgen
  251. ) else if "%rfid.ovpn.crt.multigen%" == "1" (
  252.     goto cert_mgen
  253. )
  254.  
  255.  
  256.  
  257. :cert_mgen
  258.  
  259. set rfid.ovpn.crt.rdn.orig=%rfid.ovpn.crt.rdn%
  260. echo   [D] entering easy-rsa directory
  261. cd %rfid.ovpn.path%\%rfid.ovpn.ossl.gendir%
  262. for /l %%i in (%rfid.ovpn.crt.mgen_start%,1,%rfid.ovpn.crt.mgen_stop%) do (
  263.     if "%rfid.ovpn.ui.debug%" GEQ "2" (
  264.         echo   [D] genstart ^(%%i of %rfid.ovpn.crt.mgen_stop% - %rfid.ovpn.crt.mgen_start%^)
  265.     )
  266.     if "%rfid.ovpn.ui.debug%" GEQ "1" (
  267.         echo   [*] appending number postfix in RDN CN option
  268.     )
  269.    
  270.     if "%rfid.ovpn.crt.mgen_autonum%" == "yes" (
  271.         set rfid.ovpn.crt.rdn=%rfid.ovpn.crt.rdn.orig%_%%i
  272.         set rfid.ovpn.crt.updated_CN=%rfid.ovpn.crt.CN%_%%i
  273.     ) else if "%rfid.ovpn.crt.mgen_autonum%" == "1" (
  274.         set rfid.ovpn.crt.rdn=%rfid.ovpn.crt.rdn.orig%_%%i
  275.         set rfid.ovpn.crt.updated_CN=%rfid.ovpn.crt.CN%_%%i
  276.     )
  277.     rem rfid.ovpn.ossl.genreq_opts=req -config openssl.cnf -days 3650 -nodes -new -batch -multivalue-rdn
  278.     rem rfid.ovpn.ossl.gencrt_opts=ca -days 3650 -config openssl.cnf
  279.     set rfid.ovpn.ossl.genreq="%rfid.ovpn.ossl.path%" %rfid.ovpn.ossl.genreq_opts%^
  280.      -keyout %rfid.ovpn.keys.path%\!rfid.ovpn.crt.updated_CN!.key^
  281.      -out %rfid.ovpn.keys.path%\!rfid.ovpn.crt.updated_CN!.csr^
  282.      -subj %rfid.ovpn.crt.rdn%
  283.  
  284.     echo   [K] generating key for %rfid.ovpn.crt.CN%_%%i..
  285.     if "%rfid.ovpn.ui.debug%" GEQ "2" (
  286.         set
  287.         echo rfid.ovpn.crt.updated_CN   -   !rfid.ovpn.crt.updated_CN!
  288.         echo rfid.ovpn.ossl.genreq      -   !rfid.ovpn.ossl.genreq!
  289.         echo rfid.ovpn.ossl.path        -   %rfid.ovpn.ossl.path%
  290.     )
  291.    
  292.     rem GENERATOR
  293.     if "%rfid.ovpn.ui.debug%" GEQ "2" (
  294.         !rfid.ovpn.ossl.genreq! > ossl_%rfid.ovpn.crt.CN%_%%i_keygen.log ^
  295.     ) else (
  296.         !rfid.ovpn.ossl.genreq! >nul 2<&1
  297.     )
  298.  
  299.     if "%rfid.ovpn.ui.debug%" GEQ "1" echo   [i] checking if CSR ^& KEY files exist
  300.     if not exist "%rfid.ovpn.keys.path%\!rfid.ovpn.crt.updated_CN!.key" (
  301.         echo   [E] exiting, keyfile '!rfid.ovpn.crt.updated_CN!.key' not found & goto unload
  302.     )
  303.     if not exist "%rfid.ovpn.keys.path%\!rfid.ovpn.crt.updated_CN!.csr" (
  304.         echo   [E] exiting, request file'!rfid.ovpn.crt.updated_CN!.csr' not found & goto unload
  305.     )
  306. )
  307. rem cert req opts:     -keyout %rfid.ovpn.keys.path%\[client_name].key -out %rfid.ovpn.keys.path%\[client_name].csr -subj "/C=CountryName/ST=Providence/L=CityName/CN=[client_name]"
  308. rem cert dynamic opts: -out %rfid.ovpn.keys.path%\%1.crt -in %rfid.ovpn.keys.path%\%1.csr
  309.  
  310. goto :unload
  311.  
  312.  
  313.  
  314. REM ########## unload routine ##############
  315. :unload
  316. echo   [ ] work complete
  317. echo.
  318. endlocal
  319. color
  320. title %CD%
  321. :EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement