- 虽然口令的安全性很值得担忧,但是口令在OpenSSL中是经常使用的,这是没有办法替代的一种简易的保护数据的方法。
- OpenSSL中使用口令的地方很多,比如密钥的加密和解密,等等。OpenSSL的指令提供了多种灵活的口令输入方法,但是,正是因为方法太多了,反而令很多使用者觉得迷惑不解。
- 在OpenSSL的指令中,通常通过“-pasin”或者“-pasout”的参数来输入口令,这些参数的形式有5种,分别对应5种不同的口令获取途径。
1, 提示输入
- 最简单的,也就是默认的,是从指令行界面提示输入口令。一般来说,如果你没有使用“-pasin”或者“-pasout”指明口令获取方式,如果输入文件或指令要求输入口令,那么就会采用这种方式。这种方式的应用很简单,只要根据提示输入口令即可,但是一般会要求验证一次。
- 这种输入方法的好处是口令不会在屏幕上以明文显示出来,在一定程度上可以防止恶意的旁人的偷窥。当然它也有不方便的地方,比如没有办法在程序使用脚步自动批处理运行的时候使用,因为它需要交互,这样自然限制了其自动性能。虽然这种方式是默认的,但是如果你非要用“-pasin”指定这种方式,那么可以输入如下面形式的参数:
- -passin stdin
2,直接输入
- 直接输入口令的方式可能是最受欢迎的,也是最容易想像的方式,它可以直接在指令参数中输入指令。但是因为OpenSSL灵活的口令获取方式,使得使用者通常被这种容易想像方式迷惑。如果你要使用这种方式,应该使用下面的形式:
- -passin pass : 123456
- 但这肯定会使得OpenSSL的指令给你返回错误使用参数的提示。事实上你只需要做多一点点,在口令前面输入“pass:”5个字符。这种方式因为口令是以明文输入的,在屏幕上可见,所以使用的时候一定先要转过头四周看看,确保没有人想盗取你的口令才能进行。
3,环境变量输入
- 有时候可能需要将口令保存起来重复利用,而你又不太想记住这个复杂的口令,那么可以选择将它存放在环境变量中,使用的时候只要记住环境变量名就可以。对于测试来说,这是一个好方法,这可以使得你所有需要口令的文件都使用相同的口令,免除你痛苦地回忆口令。这种方式的使用首先要求你设置好环境变量,然后输入如下的形式:
- -passin env:passwdvar
- 其中的passwdvar就是环境变量名。当然,这种方式的安全性不怎么样,因为环境变量是所有使用相同计算机的人都能看到的,并且是以明文存放。
4,文件输入
- OpenSSL还提供了从文件获取口令的方式,这种方式指定获取口令的文件名,然后将文件名的第一行作为口令。
- 如果你同时使用了“-pasin”和“-pasout”参数并且都指定了同一个文件作为口令文件,那么指令就会将第一行作为-pasin的口令,而第二行作为-passout的口令。
- 这种方式的使用形式如下: -passin file : filename
- 这里的filename是文件名,当然,必要的时候,需要包含路径。事实上,提供的filename不一定就是文件,可以是设备或其他符合文件I/O操作规范的命名管道。
5,描述符输入
- 通用的描述符也可以作为一种获取口令的来源
- 其使用方式如下:-passin fd : number
- 这里的number是文件描述句柄的编号。这种方式在Windows下的指令行界面下使用似乎并不方便,但是在脚步文件中使用还是可以的。而在Unix系统下,使用就方便得多,比如管道就可以作为一种文件描述符输入。