本文介绍在Ubuntu 18.04操作系统下安装和使用OpenSSL 1.1.1a/1.1.1b的方法,下面的安装方法仅在Ubuntu 18.04版本中实际经过测试运行,如果你使用的是其他的Ubuntu版本或其他的Linux发行版,本文仅做参考。
安装OpenSSL 1.1.1a或者1.1.1b版本的方法 注:Ubuntu 18.04装载了OpenSSL 1.1.0g,本文内容中并未将其卸载,而是仅安装了OpenSSL 1.1.1a,更新详情可参考OpenSSL 1.1.1版本发布下载,增加TLS v1.3支持一文。下面是具体的安装流程。 在系统安装完成之后,首先同步最新的软件包: sudo apt-get update 然后安装编译过程中必要的工具——gcc和make工具: sudo apt-get install gcc sudo apt-get install make 如果此时查看OpenSSL版本: openssl version 如果是Ubuntu 18.04版本,会显示版本为1.1.0g。 gcc和make工具安装完成后,下载OpenSSL 1.1.1a的源码,看文章上面的链接提供有下载地址:
下载OpenSSL 1.1.1a的源码,可在任意文件目录下载,此下载地址为官网地址,国内网络访问可能较慢,终端中下载: wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz 如果是OpenSSL 1.1.1b,则运行: wget https://www.openssl.org/source/openssl-1.1.1b.tar.gz 注:若安装OpenSSL 1.1.1b版本,下面涉及到的都要更改一下,即把a改成b即可。 下载完成后进行解压: tar zxvf openssl-1.1.1a.tar.gz 进入解压后的文件目录: cd openssl-1.1.1a 接下来进行编译和安装: ./config make sudo make install 编译安装之后,并未完全完成,如果此时查看OpenSSL版本,就会发现还差一步。执行查询OpenSSL版本的命令后,可能会显示没有找到OpenSSL 1.1.1a版本,而不是直接显示版本。 此时需要修改配置文件,配置文件路径为/etc/ld.so.conf: sudo vim /etc/ld.so.conf 如果不习惯vim,或者尚未安装vim,自行使用gedit。 在配置文件后添加OpenSSL 1.1.1a的安装目录: /usr/local/bin /usr/local/lib /usr/local/ssl 保存退出,最后执行命令: sudo ldconfig 此时查看OpenSSL版本,即显示1.1.1a。至此,在Ubuntu 18.04下OpenSSL 1.1.1a安装完成,可以直接使用命令行工具或者用OpenSSL库用C语言进行开发。
使用OpenSSL 1.1.1a的方法 需要在Ubuntu 18.04下安装Apache和PHP环境,最终采用通过PHP来使用OpenSSL的原因是PHP开启OpenSSL较为方便,且满足项目需求。安装Apache服务器和PHP环境本来并不是困难的事情,所以本文还顺带介绍了PHP如何开启最新版的OpenSSL功能,并附带注意事项,以下是详细方法。 1、安装流程 首先安装Apache: sudo apt-get install apache2 参考:在Ubuntu 18.04 Server中安装LAMP的方法[Apache、MariaDB、PHP7.2]。 安装完成之后,在浏览器中输入地址localhost或访问服务器的IP地址,即可查看服务器初始页面,上面显示“It works”,即表示Apache服务器正常工作。 接下来安装PHP: sudo apt-get install php7.0 如果是Ubuntu 18.04版本,虽然输入的是php7.0,但最终安装的是php7.2。在Ubuntu 16.04上执行此命令,安装的是php7.0。对于OpenSSL的使用,这两个版本的选择应该是无伤大雅。 参考:在Ubuntu 18.04/16.04中安装PHP 7.3/7.2/7.1/7.0和PHP 7模块的方法。 查看PHP版本的命令为: php -v 为了将安装好的Apache服务器与PHP环境关联起来,需要再安装一个PHP插件,插件的版本需要跟随PHP的版本而定。 可以首先查询需要安装的插件的版本: apt-cache search libapache2-mod-php 如果是PHP7.2,则会输出libapache2-mod-php7.2。如果是PHP7.0,则会输出libapache2-mod-php7.0。 根据具体情况进行安装,这里安装的是PHP7.2: sudo apt-get install libapache2-mod-php7.2 至此Apache和PHP环境就安装完成。可以在/var/www/html目录下新建index.php文件,测试安装好的环境: <?php // index.php phpinfo(); ?> 保存退出后,浏览器访问localhost/index.php,即可查看已安装好的PHP环境信息详情页面。详情页面中有关于OpenSSL版本的信息,如果此前安装好了OpenSSL 1.1.1a,那么页面上的OpenSSL Library Version将会是OpenSSL 1.1.1a。如果未安装最新版OpenSSL,在Ubuntu 18.04下,版本为OpenSSL 1.1.0。在Ubuntu 16.04下,版本为OpenSSL 1.0.1。 2、注意事项 目前对PHP环境下的OpenSSL 1.1.1a测试经验并不丰富,只有一个需要特别提出的注意事项。 当在PHP代码中使用执行系统命令行的函数时: <?php exec("$command"); ?> 如果执行的是OpenSSL相关的命令行,如使用SM4算法进行对称加密: openssl sm4 -e -in inputfile -out outputfile -k passphrase 其中inputfile是加密的输入文件的文件名,outputfile是加密后输出文件的文件名,passphrase是密码短语。 在PHP的exec()函数中执行此命令,需要首先授予服务器根目录权限: sudo chmod -R 777 /var/www/html /var/www/html是Apache服务器的根目录。授予了文件读写的权限后,才能正常执行相关命令。
结语 以上就是安装OpenSSL 1.1.1a和使用的详细方法,在这一版本中收录了GmSSL实现的国密算法(SM2/SM3/SM4),升级到1.1.1a版本后就可以使用调用国密SM4算法的加解密库函数来实现一些功能了。通常情况下,由于采用的是tar.gz软件包安装,应该能适用在很多Linux发行版上。
相关主题 |