Linux基本功杂记——[022]——「OpenSSL」

一、常用操作



对称加密:

openssl enc -e -aes256 -base64 -in goal.file -out result.file    加密,-base64 指使用 base64 編码
openssl enc -d -aes256 -base64 -in result.file -out goal.file    解密

单向加密(文件完整性,没有被篡改过):

openssl dgst -sha512 goal.file    使用 sha512 算法生成特征码,默认为 md5 算法

生成随机数

openssl rand -base64 10    按 base64 編码规则,生成 10 位随机数

管理用户密码(即对密码加密存放)

openssl passwd -1 -salt `openssl rand -base64 6`    注:-1 指使用 md5 算法,另可选 -apr1;-1 与 -salt 均为可选项

非对称加密(密钥对,私钥加密用于签名証明身份,公钥加密用于保护文件内容)

openssl genrsa 4096 > pkey.file && chmod 0600 pkey.file    生成私钥,密钥强度设置为 4096 ,可选 1024 或 2048 ;私钥权限必須严整控制
openssl rsa -in pkey.file -pubout > pubkey.file    生成公钥(从私钥中提取)
openssl rsautl -encrypt -in goal.file -inkey pubkey.file -pubin -out result.file    使用公钥对文件 goal.file 加密,-pubin 声明使用公钥加密,默认是私钥
openssl rsautl -decrypt -in result.file -inkey pkey.file -out goal.file    使用私钥对文件 result.file 解密

二、 CA 相关



参考資料:

各詞解释:

  • PKI :Public Key Infrastructure
  • CRL :Certificate revocation lists ,证书黑名单、证书废除列表
  • PKCS :Public Key Cryptography Standards ,公钥加密标准
  • X.509 :国际电信联盟-电信部分(ITU-T)和国际标准化组织(ISO)的证书格式标准,作为ITU-ISO目录服务系列标准的一部分,X.509定义了公钥证书结构的基本标准;一份X.509证书是一些标准字段的集合,这些字段包含有关用户或设备及其相应公钥的信息
  • CSR :Certificate Signing Request,证书签名请求,是需要提交給 CA 的申请文件
  • CRT :certificate,即证书
  • PEM :Privacy Enhanced Mail,証书文件編码格式的一种,采用 base64 文本文件方式
  • DER :Distinguished Encoding Rules,另一种証书文件編码格式,二进制編码,常见于 Windows 平台

配置文件位置:/etc/PATH/TO/openssl.cnf    不同发行版有差别,使用 openssl version -d 命令查看

一、自签証书(CA 服务端):

  1. 对应 openssl.cnf 中定义的位置,创建 index.txt 、serial 文件
  2. 使用 openssl genrsa 生成服务端私钥
  3. 生成自签証书:openssl req -new -x509 -key /PATH/TO/CA/ca_private_key -out /PATH/TO/CA/ca_cert -days 1000    注: -x509 选项用于创建自签(根) CA ,-days 指明有效期

二、申请証书(客户端):

  • 生成申请文件并发送至 CA 机构 :openssl req -new -key /PATH/TO/client_private_key -out /PATH/TO/client_csr -days 100

三、签发証书(服务端): 

  • 签发証书并发送至客户端:openssl ca -in /PATH/TO/client_csr -out /PATH/TO/result_client_cst -days 100
时间: 2024-12-17 04:31:48

Linux基本功杂记——[022]——「OpenSSL」的相关文章

Linux基本功杂记——[023]——「OpenSSH tunneling」

SSH tunneling 相关 参考資料:http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/ 本地端口转发: 适用场景:发起端可以连接 SSH_server_host 端的 ssh 服务,但无法与最终目标 goal_host 的程序直接通信,而 SSH_server_host 可以 命令格式:ssh [-g] -L <local_port>:<goal_host>:<goal_port> [email

Linux 小知识翻译 - 「syslog」

这次聊聊「syslog」. 上次聊了「日志」(lgo).这次说起syslog,一看到log(日志)就明白是怎么回事了.syslog是获取系统日志的工具. 很多UINIX系的OS都采用了这个程序,它承担了「获取系统全部的日志」这个维持系统正常运行的重要任务. syslog的本体是「syslogd」这个daemon(一般翻译成守护进程),常驻内存中获取日志. syslog的特点是可以通过配置文件「/etc/syslog.conf」,对「哪种应用程序?哪种重要度的信息?记录在哪个文件中?」等进行细致的

Linux 小知识翻译 - 「日志」(log)

这次聊聊「日志」. 「日志」主要指系统或者软件留下的「记录」.出自表示「航海日志」的「logbook」. 经常听说「出现问题的时候,或者程序没有安装自己预期的来运行的时候,请看看日志!」. 确实,记录了系统和软件详细运行情况的「日志」是信息的宝库,通过日志来解决问题的事例也非常多. 但事实上,「无论如何也不会看日志」的用户也有很多.理由很简单,日志的信息量非常大,全部用眼睛来看的话是非常吃力的. 而且,英语写的日志也会让英文不好的人敬而远之. 虽说「要养成用眼睛来看日志的习惯」,但实行起来却非常

Linux 小知识翻译 - 「补丁」(patch)

这次,聊聊补丁. 当有bug或者安全漏洞的时候,就会发布补丁.打上补丁之后,就能解决相应的bug或者安全漏洞. 那么,「补丁」到底是什么呢? 「补丁」只有少量的代码,一般都是对程序的一部分进行更新或者追加,包括bug修正,安全漏洞修正,功能追加或者变更等等.当然,只有「补丁」是无法运行的. 即,只有将「补丁」附加到原来的程序中,更新原来的程序后,才能运行. 「补丁(patch)」本来是指「打补丁用的小布头」.「patch」正是为了补足现有的程序,堵住程序漏洞的「布头」. 打「补丁」的时候需要用到

Linux 小知识翻译 - 「i386」是什么?

i386是指 *CPU* 的种类,也可以指 *CPU* 的架构(architecture). 现在的 CPU 一般都用 「Core 2 Duo」或者「Athlon」,「Xeon」,「Opteron」之类的比较酷的名称来称呼. Linux诞生的时候,CPU作为一个重要的组件,一般用型号来称呼它. i386的 i 代表 Intel. Intel公司最先生产的,从4004开始的CPU系列中,386(80386)是第一个32位的CPU. Linux刚开始就是作为386架构上兼容POSIX的内核来开发的.

Linux 小知识翻译 - 「RFC」

这次聊聊「RFC」. 有很多人经常听说「RFC」的吧,上次介绍的NTP是由「RFC1305规定的」,HTTP是由「RFC2616规定的」. RFC是「Request For Comments」的简称,由 Internet Engineering Task Force 公开的,以指定互联网技术标准「为目标」的文档. 可以这么说,互联网技术中的大部分都是依据它来实现的. 但是,上面的「为目标」用括号括起来是有原因的.实际上互联网技术每天都在变化,想要标准化是非常困难的. 即使规定了「这个是标准」,根

Linux 小知识翻译 - 「版本号」的命名方式

包括OS,所有的软件都有版本号信息.一般来说,版本号的增大表示软件的功能增强了或者修正了一些Bug,也就是表示软件更新了. 版本号的命名方式没有统一的标准.每种软件都不一样. 大部分情况下,版本号以「X.Y」或者「X.Y.Z」的方式命名,软件有大幅的功能增强时,增加「X」的数值,只有微小的改变时,增加「Y」或者「Z」的数值. 因此,「X」被称为「主版本号」,「Y」或者「Z」被称为「次版本号」. 但是,版本号有时还有其他的含义.比如Linux内核的版本号,现在是以「X.Y.Z」的方式命名的,200

Linux 小知识翻译 - 「RAID」

最近术语「RAID」变得比较有名.「RAID」是指将多个HDD组合起来使用,从而提高存储可靠性的一种技术. 那么,关于 RAID 中的 「RAID 0」「RAID 1」「RAID 5」等各种「RAID」都有了解吗? RAID中最容易理解的应该是「RAID 1」(镜像)吧.所谓镜像(「RAID」),就是将同样的内容写入多台设备中,即使一台设备故障了,但只要还有一台设备是好的,就不用担心数据丢失. RAID 从「RAID 0」开始,到「RAID 6」为止,总共分为7类. 除了之前说的「RAID 1」

Linux 小知识翻译 - 「GCC」

这次聊聊「GCC」. GCC是「GNU Compiler Collection」的简称,由C.C++.FORTRAN.Java等语言的编译器以及这些语言的库所组成. GCC不仅包含编译器本身,还包含了编译所必要的库,所以可以编译多种语言所写的代码. GCC是免费软件,几乎所有Linux发行版中都包含它,所有使用Linux的时候可以很方便的使用GCC. 甚至可以这么说「提到Linux就不能不提GCC」. 使用GCC最重要的目的之一,就是「构建Linux内核」. 编译Linux内核源码的时候,是用G