[个人笔记] ssh-keygen和openssl工具的使用

Linux - 运维篇

第三章 ssh-keygen和openssl工具的使用

  • Linux - 运维篇
  • 系列文章回顾
  • 下章内容
  • ssh-keygen和openssl工具的使用
    • ssh-keygen笔记
    • ssh-keygen 生成密钥对
    • openssl笔记
    • openssl 生成密钥对


系列文章回顾

第一章 Linux扩容LVM分区
第二章 Linux虚拟机安装VMware Tools插件



下章内容

第四章 Linux配置NTP时间同步


ssh-keygen和openssl工具的使用

ssh-keygen笔记

ssh-keygen -m 编码格式 -t 密钥类型 -f 文件路径 -b 密钥长度 -N 私钥密码 -C 备注( [email protected]格式)
ssh-keygen -e:导出
ssh-keygen -i:导入
ssh-keygen -e -m pem -f xxx.pub    # 将xxx.pub公钥转换成pem格式的编码格式
ssh-keygen -e -m pem -f xxx.pub | egrep -v "BEGIN|END" | base64 -d | od -t x1 -An -w4 | tr 'a-f' 'A-F' | tr -d ' ' | fmt -w 48    # 将xxx.pub转换成十六进制的pem格式编码格式

egrep "BEGIN|END"    	# 等同grep -E "BEGIN|END"     # 过滤显示指定值, 以 | 为分隔符做匹配
egrep -v "BEGIN|END"    # 等同grep -Ev "BEGIN|END"    # 原文中去除过滤出来的指定值
base64 -d    		# base64解码
od -t x1 -An -w4    #
tr 'a-f' 'A-F'    	# 原文中将小写a-f字符转换成大写A-F字符
tr -d ' '    		# 去除空白字符
fmt -w 48      		# 格式化成一行显示,并且每行最多48个字符
ssh-keygen
-m    rfc4716 | pkcs8 | pem    			# 编码格式,不区分大小写
-t      rsa | ecdsa | ed25519 | dsa     # 密钥格式,不区分大小写
ssh密钥里推荐用sha256 + ssh-ed25519或sha25 + ssh-rsa。    # ecc 基于椭圆曲线数学的公开密钥加密算法,ecdsa是ecc和dsa的结合,叫椭圆曲线数字签名算法。

ssh密钥公钥算法的RSA算法也相对容易被撞库破解,判定为不安全算法,被逐渐淘汰。

ssh密钥公钥算法的ECDSA使用了SECP256r1椭圆曲线随机算法做随机数的产生,但由于2013年棱镜门事件曝光,美国国家安全局NSA对SECP256r1曲线安置了后门陷阱,之后ECDSA判定为不安全算法,被逐渐淘汰,但市场上仍然有部分产品在使用ECDSA算法。

ssh密钥公钥算法的ED25519是curve25519曲线即蒙哥马利曲线。

而交换机系列目前只支持ECDSA(即ecdsa-sha2-nistp521)和RSA(即ssh-rsa),从密钥强度和计算效率来看,ecdsa比rsa要强。又破解消耗的时间来看,ecdsa仍然比rsa更安全,而且是难以破解的。

ssh-keygen 生成密钥对

### 生成RSA算法的密钥对(私钥+公钥)
ssh-keygen -t rsa -b 2048 -m pem -f rsa2048pem -N '' -C 'xxx@xxx'		# 生成2048位的RSA密钥对

### 生成ECC算法的密钥对(私钥+公钥)
ssh-keygen -t ecdsa -b 521 -m pem -f ecdsa521pem -N '' -C 'xxx@xxx'		# 生成521位的ECDSA密钥对


### RSA公钥转换成PEM格式
ssh-keygen -e -m pem -f rsa2048pem.pub		# 将2048位的RSA公钥转换成PEM格式显示

### RSA公钥转换成PEM格式的十六进制显示
ssh-keygen -e -m pem -f rsa2048pem.pub | egrep -v "BEGIN|END" | base64 -d | od -t x1 -An -w4 | tr 'a-f' 'A-F' | tr -d ' ' | fmt -w 48


openssl笔记

ecdsa-sha2-nistp521、curve25519-sha256、ssh-ed25519:密钥交换算法
ecdsa:签名算法
sha2:加密算法
secp256k1:椭圆曲线算法				# SECG 曲线P-256    密码标准化组织,比特币使用的算法
nistp384(secp384r1): 椭圆曲线算法  # NIST/SECG 曲线P-384    美国国家标准(棱镜门有曝光NAS对此算法植入后门)
nistp521(secp521r1):椭圆曲线算法  # NIST/SECG 曲线P-521    美国国家标准(棱镜门有曝光NAS对此算法植入后门)
prime256v1: X9.62/SECG curve over a 256 bit prime field    # X9.62/SECG 曲线P-256

openssl 生成密钥对

### 生成RSA算法私钥
openssl genrsa -out rsa2048.key 2048    # 输出2048位的rsa私钥

### 生成RSA算法公钥
openssl rsa -in rsa2048.key -pubout -out rsa2048.pub		# 输出私钥rsa2048.key对应的公钥
### 生成ECC算法私钥
openssl ecparam -name secp521r1 -out ecc521.pem															# 生成secp521r1算法的ecc参数,默认pem格式
openssl ecparam -name secp521r1 -outform der|pem -out ecc521.pem			# 生成secp521r1算法的ecc参数,用outform指定der或pem格式
openssl ecparam -name secp521r1 -outform pem -genkey -out ecc521.pem		# 生成secp521r1算法的ecc参数和ecc私钥,用outform指定pem格式
openssl ecparam -name secp521r1 -outform pem -genkey -noout -out ecc521.pem	# 生成secp521r1算法的ecc私钥,用noout去除ecc参数输出,用outform指定pem格式
# ecdsa-sha2-nistp521 密钥交换算法			# ecc+dsa的签名算法 & sha2加密算法 & nistp521(secp521r1) 椭圆曲线算法

openssl ecparam -list_curves		# 输出ecc算法里支持的椭圆曲线算法列表

### 生成ECC算法公钥
openssl ec -in ecc521.pem -pubout -out ecc521.pub			# 生成私钥ecc521.pem对应的公钥

你可能感兴趣的:(Linux,linux,运维)