
1: VMS Installation instructions 2: written by Richard Levitte 3: <richard@levitte.org> 4: 5: 6: Intro: 7: ====== 8: 9: This file is divided in the following parts: 10: 11: Requirements - Mandatory reading. 12: Checking the distribution - Mandatory reading. 13: Compilation - Mandatory reading. 14: Logical names - Mandatory reading. 15: Test - Mandatory reading. 16: Installation - Mandatory reading. 17: Backward portability - Read if it's an issue. 18: Possible bugs or quirks - A few warnings on things that 19: may go wrong or may surprise you. 20: TODO - Things that are to come. 21: 22: 23: Requirements: 24: ============= 25: 26: To build and install OpenSSL, you will need: 27: 28: * DEC C or some other ANSI C compiler. VAX C is *not* supported. 29: [Note: OpenSSL has only been tested with DEC C. Compiling with 30: a different ANSI C compiler may require some work] 31: 32: Checking the distribution: 33: ========================== 34: 35: There have been reports of places where the distribution didn't quite get 36: through, for example if you've copied the tree from a NFS-mounted Unix 37: mount point. 38: 39: The easiest way to check if everything got through as it should is to check 40: for one of the following files: 41: 42: [.CRYPTO]OPENSSLCONF.H_IN 43: [.CRYPTO]OPENSSLCONF_H.IN 44: 45: They should never exist both at once, but one of them should (preferably 46: the first variant). If you can't find any of those two, something went 47: wrong. 48: 49: The best way to get a correct distribution is to download the gzipped tar 50: file from ftp://ftp.openssl.org/source/, use GUNZIP to uncompress it and 51: use VMSTAR to unpack the resulting tar file. 52: 53: GUNZIP is available in many places on the net. One of the distribution 54: points is the WKU software archive, ftp://ftp.wku.edu/vms/fileserv/ . 55: 56: VMSTAR is also available in many places on the net. The recommended place 57: to find information about it is http://www.free.lp.se/vmstar/ . 58: 59: 60: Compilation: 61: ============ 62: 63: I've used the very good command procedures written by Robert Byer 64: <byer@mail.all-net.net>, and just slightly modified them, making 65: them slightly more general and easier to maintain. 66: 67: You can actually compile in almost any directory separately. Look 68: for a command procedure name xxx-LIB.COM (in the library directories) 69: or MAKExxx.COM (in the program directories) and read the comments at 70: the top to understand how to use them. However, if you want to 71: compile all you can get, the simplest is to use MAKEVMS.COM in the top 72: directory. The syntax is the following: 73: 74: @MAKEVMS <option> <rsaref-p> <debug-p> [<compiler>] 75: 76: <option> must be one of the following: 77: 78: ALL Just build "everything". 79: CONFIG Just build the "[.CRYPTO]OPENSSLCONF.H" file. 80: BUILDINF Just build the "[.INCLUDE]BUILDINF.H" file. 81: SOFTLINKS Just copies some files, to simulate Unix soft links. 82: BUILDALL Same as ALL, except CONFIG, BUILDINF and SOFTLINKS aren't done. 83: RSAREF Just build the "[.xxx.EXE.RSAREF]LIBRSAGLUE.OLB" library. 84: CRYPTO Just build the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library. 85: SSL Just build the "[.xxx.EXE.SSL]LIBSSL.OLB" library. 86: SSL_TASK Just build the "[.xxx.EXE.SSL]SSL_TASK.EXE" program. 87: TEST Just build the "[.xxx.EXE.TEST]" test programs for OpenSSL. 88: APPS Just build the "[.xxx.EXE.APPS]" application programs for OpenSSL. 89: 90: <rsaref-p> must be one of the following: 91: 92: RSAREF compile using the RSAREF Library 93: NORSAREF compile without using RSAREF 94: 95: Note 0: The RSAREF library IS NO LONGER NEEDED. The RSA patent 96: expires September 20, 2000, and RSA Security chose to make 97: the algorithm public domain two weeks before that. 98: 99: Note 1: If you still want to use RSAREF, the library is NOT INCLUDED 100: and you have to download it. RSA Security doesn't carry it 101: any more, but there are a number of places where you can find 102: it. You have to get the ".tar-Z" file as the ".zip" file 103: doesn't have the directory structure stored. You have to 104: extract the file into the [.RSAREF] directory as that is where 105: the scripts will look for the files. 106: 107: Note 2: I have never done this, so I've no idea if it works or not. 108: 109: <debug-p> must be one of the following: 110: 111: DEBUG compile with debugging info (will not optimize) 112: NODEBUG compile without debugging info (will optimize) 113: 114: <compiler> must be one of the following: 115: 116: DECC For DEC C. 117: GNUC For GNU C. 118: 119: 120: You will find the crypto library in [.xxx.EXE.CRYPTO], called LIBCRYPTO.OLB, 121: where xxx is VAX or AXP. You will find the SSL library in [.xxx.EXE.SSL], 122: named LIBSSL.OLB, and you will find a bunch of useful programs in 123: [.xxx.EXE.APPS]. However, these shouldn't be used right off unless it's 124: just to test them. For production use, make sure you install first, see 125: Installation below. 126: 127: Note 1: Some programs in this package require a TCP/IP library. 128: 129: Note 2: if you want to compile the crypto library only, please make sure 130: you have at least done a @MAKEVMS CONFIG, a @MAKEVMS BUILDINF and 131: a @MAKEVMS SOFTLINKS. A lot of things will break if you don't. 132: 133: 134: Logical names: 135: ============== 136: 137: There are a few things that can't currently be given through the command 138: line. Instead, logical names are used. 139: 140: Currently, the logical names supported are: 141: 142: OPENSSL_NO_ASM with value YES, the assembler parts of OpenSSL will 143: not be used. Instead, plain C implementations are 144: used. This is good to try if something doesn't work. 145: OPENSSL_NO_'alg' with value YES, the corresponding crypto algorithm 146: will not be implemented. Supported algorithms to 147: do this with are: RSA, DSA, DH, MD2, MD4, MD5, RIPEMD, 148: SHA, DES, MDC2, CR2, RC4, RC5, IDEA, BF, CAST, HMAC, 149: SSL2. So, for example, having the logical name 150: OPENSSL_NO_RSA with the value YES means that the 151: LIBCRYPTO.OLB library will not contain an RSA 152: implementation. 153: 154: 155: Test: 156: ===== 157: 158: Testing is very simple, just do the following: 159: 160: @[.TEST]TESTS 161: 162: If a test fails, try with defining the logical name OPENSSL_NO_ASM (yes, 163: it's an ugly hack!) and rebuild. Please send a bug report to 164: <openssl-bugs@openssl.org>, including the output of "openssl version -a" 165: and of the failed test. 166: 167: 168: Installation: 169: ============= 170: 171: Installation is easy, just do the following: 172: 173: @INSTALL <root> 174: 175: <root> is the directory in which everything will be installed, 176: subdirectories, libraries, header files, programs and startup command 177: procedures. 178: 179: N.B.: INSTALL.COM builds a new directory structure, different from 180: the directory tree where you have now build OpenSSL. 181: 182: In the [.VMS] subdirectory of the installation, you will find the 183: following command procedures: 184: 185: OPENSSL_STARTUP.COM 186: 187: defines all needed logical names. Takes one argument that 188: tells it in what logical name table to insert the logical 189: names. If you insert if it SYS$MANAGER:SYSTARTUP_VMS.COM, the 190: call should look like this: 191: 192: @openssldev:[openssldir.VMS]OPENSSL_STARTUP "/SYSTEM" 193: 194: OPENSSL_UTILS.COM 195: 196: sets up the symbols to the applications. Should be called 197: from for example SYS$MANAGER:SYLOGIN.COM 198: 199: The logical names that are set up are the following: 200: 201: SSLROOT a dotted concealed logical name pointing at the 202: root directory. 203: 204: SSLCERTS Initially an empty directory, this is the default 205: location for certificate files. 206: SSLMISC Various scripts. 207: SSLPRIVATE Initially an empty directory, this is the default 208: location for private key files. 209: 210: SSLEXE Contains the openssl binary and a few other utility 211: programs. 212: SSLINCLUDE Contains the header files needed if you want to 213: compile programs with libcrypto or libssl. 214: SSLLIB Contains the OpenSSL library files (LIBCRYPTO.OLB 215: and LIBSSL.OLB) themselves. 216: 217: OPENSSL Same as SSLINCLUDE. This is because the standard 218: way to include OpenSSL header files from version 219: 0.9.3 and on is: 220: 221: #include <openssl/header.h> 222: 223: For more info on this issue, see the INSTALL. file 224: (the NOTE in section 4 of "Installation in Detail"). 225: You don't need to "deleting old header files"!!! 226: 227: 228: Backward portability: 229: ===================== 230: 231: One great problem when you build a library is making sure it will work 232: on as many versions of VMS as possible. Especially, code compiled on 233: OpenVMS version 7.x and above tend to be unusable in version 6.x or 234: lower, because some C library routines have changed names internally 235: (the C programmer won't usually see it, because the old name is 236: maintained through C macros). One obvious solution is to make sure 237: you have a development machine with an old enough version of OpenVMS. 238: However, if you are stuck with a bunch of Alphas running OpenVMS version 239: 7.1, you seem to be out of luck. Fortunately, the DEC C header files 240: are cluttered with conditionals that make some declarations and definitions 241: dependent on the OpenVMS version or the C library version, *and* you 242: can use those macros to simulate older OpenVMS or C library versions, 243: by defining the macros _VMS_V6_SOURCE, __VMS_VER and __CTRL_VER with 244: correct values. In the compilation scripts, I've provided the possibility 245: for the user to influence the creation of such macros, through a bunch of 246: symbols, all having names starting with USER_. Here's the list of them: 247: 248: USER_CCFLAGS - Used to give additional qualifiers to the 249: compiler. It can't be used to define macros 250: since the scripts will do such things as well. 251: To do such things, use USER_CCDEFS. 252: USER_CCDEFS - Used to define macros on the command line. The 253: value of this symbol will be inserted inside a 254: /DEFINE=(...). 255: USER_CCDISABLEWARNINGS - Used to disable some warnings. The value is 256: inserted inside a /DISABLE=WARNING=(...). 257: 258: So, to maintain backward compatibility with older VMS versions, do the 259: following before you start compiling: 260: 261: $ USER_CCDEFS := _VMS_V6_SOURCE=1,__VMS_VER=60000000,__CRTL_VER=60000000 262: $ USER_CCDISABLEWARNINGS := PREOPTW 263: 264: The USER_CCDISABLEWARNINGS is there because otherwise, DEC C will complain 265: that those macros have been changed. 266: 267: Note: Currently, this is only useful for library compilation. The 268: programs will still be linked with the current version of the 269: C library shareable image, and will thus complain if they are 270: faced with an older version of the same C library shareable image. 271: This will probably be fixed in a future revision of OpenSSL. 272: 273: 274: Possible bugs or quirks: 275: ======================== 276: 277: I'm not perfectly sure all the programs will use the SSLCERTS: 278: directory by default, it may very well be that you have to give them 279: extra arguments. Please experiment. 280: 281: 282: TODO: 283: ===== 284: 285: There are a few things that need to be worked out in the VMS version of 286: OpenSSL, still: 287: 288: - Description files. ("Makefile's" :-)) 289: - Script code to link an already compiled build tree. 290: - A VMSINSTALlable version (way in the future, unless someone else hacks). 291: - shareable images (DLL for you Windows folks). 292: 293: There may be other things that I have missed and that may be desirable. 294: Please send mail to <openssl-users@openssl.org> or to me directly if you 295: have any ideas. 296: 297: -- 298: Richard Levitte <richard@levitte.org> 299: 2000-02-27