云网牛站
所在位置:首页 > Linux云服务器 > 在Ubuntu 18.04下安装和使用OpenSSL 1.1.1a的方法

在Ubuntu 18.04下安装和使用OpenSSL 1.1.1a的方法

2019-04-12 22:31:19作者:正居江陵稿源:linux站

本文介绍在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的源码,看文章上面的链接提供有下载地址:

在Ubuntu 18.04下安装和使用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发行版上。

 

相关主题

在Ubuntu Server系统及nginx和OpenSSL服务器中开启TLS 1.3的方法

精选文章
热门文章