Linux学习笔记:OpenVPN的预共享密钥用于对称加密和非对称加密

在上一章的测试中,可以看到提示中包含了******* WARNING *******: all encryption and authentication features disabled -- all data will be tunnelled as cleartext这句话,表明由于没有认证,所以VPN隧道中的流量都是明文的。

*****预共享密钥可以用于小型VPN网络,如果数量多起来的话配置会非常麻烦********

现使用最简单的预共享密钥进行加密

先来生成密钥,在Centos上使用如下命令可在当前目录下生成一个2048bit的密钥文件secret.key

/usr/local/sbin/openvpn --genkey --secret secret.key

文件内容如下

#

# 2048 bit OpenVPN static key

#

-----BEGIN OpenVPN Static key V1-----

18111a27e319a4efc2e538d134e6fd3c

2348893fad5d59deba0f52053b5fda08

7d9b38854e8bbbb861cd733dcc8b79f1

7af85a7a20fa31677f8f1b132f2e6e29

5d46d25e1e7d35c5d067887ceb966a9a

22a9fa8c73eb74a0bbbcb05221fedd03

2272433c3d1306143051d8a8c4bf90d7

c00382b72781a9cbc5d69eb7ceebef4d

ed3ce5255bd1a8ca38ea47390c0c71ec

c1770c4422e5c2bdeba18d3843a3b46a

bc62dd5234bc0eb21156739bf906dad3

2f31db872aa317a9758433d9185c2152

3d3caa7bb47acb26e6828346ba14066b

58b5dbfc02eb48e6a3dfc2ec0ed04a57

d1b4e149d56e82b41019cf75e5e6653d

26dc496761e742b4ec594f2be26d66cf

-----END OpenVPN Static key V1-----

对称加密

Client与Server之间的流量都使用同一个密钥进行加密,这个密钥就是secret.key文件,具体来说,是把整个key的内容划分成四个部分(如上四个颜色块)

CentOS上

/usr/local/sbin/openvpn --ifconfig 172.16.5.1 255.255.255.0 --dev tap --secret secret.key

Win7上

openvpn --ifconfig 172.16.5.2 255.255.255.0 --dev tap --secret c:\secret.key --remote coosh.net

无论是客户端还是服务器端,任何方向的数据,均使用18111a27e319a4efc2e538d134e6fd3c来做加解密用的CIPHER key,使用5d46d25e1e7d35c5d067887ceb966a9a22a9fa8c来做加解密HMAC key。

非对称加密

服务器Centos端上的命令如下(--verb 7是debug命令,可以不写)

/usr/local/sbin/openvpn --ifconfig 172.16.5.1 255.255.255.0 --dev tap --secret secret.key 0 --verb 7

客户端Win7上的命令如下

openvpn --ifconfig 172.16.5.2 255.255.255.0 --dev tap --secret secret.key 1 --verb 7 --remote coosh.net

服务器端有四个key,分别是

加密CIPHER key:18111a27e319a4efc2e538d134e6fd3c

加密HMAC key:5d46d25e1e7d35c5d067887ceb966a9a22a9fa8c

解密CIPHER key:ed3ce5255bd1a8ca38ea47390c0c71ec

解密HMAC key:3d3caa7bb47acb26e6828346ba14066b58b5dbfc

客户端也有四个key,分别是

加密CIPHER key:ed3ce5255bd1a8ca38ea47390c0c71ec

加密HMAC key:3d3caa7bb47acb26e6828346ba14066b58b5dbfc

解密CIPHER key:18111a27e319a4efc2e538d134e6fd3c

解密HMAC key:5d46d25e1e7d35c5d067887ceb966a9a22a9fa8c

万变不离key文件的内容。

==========================================================

如果不需要加密和HMAC,可以使用--auth none参数,方便排错。

时间: 2024-10-09 22:29:42

Linux学习笔记:OpenVPN的预共享密钥用于对称加密和非对称加密的相关文章

Linux学习笔记——例说makefile 增加系统共享库

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

Linux学习笔记——例说makefile 增加自定义共享库

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

Linux学习笔记——如何在交叉编译时使用共享库

0.前言 在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这种情况下便会产生以下疑问,例如: [1]交叉编译时的共享库是否需要放置于目标板中,如果需要放置在哪个目录中. [2]交叉编译时的共享库是否需要放置于宿主机中,如果需要放置于哪个目录中. [3]交叉编译时如何指定共享库 [4]程序运行时如何查找共享库 等等问题. 博文总结了使用共享库的一般方法,并通过一个例子说明问题.如果已经有了交叉编译好的共享库,可以从[2]开始,步骤[1]只是为了说明问题,捏造一个简单的共享库试图说

Linux学习笔记——例说makefile 综合案例

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.一个较为复杂的例子 [代码仓库]--makefile-example 代码仓库位于bitbucket,可借助Tortoise

Linux学习笔记——例说makefile 增加宏定义

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

Linux学习笔记——例说makefile 索引博文

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 博文试图从简到难,通过例子说明makefile的写法,而不是整段或整片的抄袭网络上的文章. 1.索引 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一

linux学习笔记二:linux文件系统

各大linux的版本都遵循着FHS(Filesystem Hierarchy Standard)文件系统目录标准,是一个树形结构的组织文件.在此简要记录各目录. linux下所有文件都处在/文件下. 树形结构图: /boot:  系统启动相关的文件 主要文件 1.vmliunx:内核    2.initramfs:磁盘映像文件   3.grub(bootloader) /dev:设备文件 块设备:随机访问设备. 字符设备:线性设备,顺序访问.按字符为单位.键盘.鼠标. 设备号:主设备号(majo

嵌入式Linux学习笔记(基于S5PV210 TQ210)

基于S5PV210.TQ210平台. 本文更多的是教会大家如何学习! 包括如下内容: 1.前言 2.开发环境搭建 3.制作交叉编译器 4.裸机编程 4.1.汇编学习 4.2.S5PV210启动流程 4.3.点亮一个LED 4.4.串口 4.5.实现printf 4.6.时钟配置 4.7.重定位 4.8.DDR 4.9.NAND读写 4.11.LCD操作 5.移植u-boot(基于u-boot-2014.4版本) 5.1.概述 5.2.u-boot配置过程分析 5.3.u-boot编译过程分析 5

马哥Linux学习笔记之三——加密

1.明文传输 ftp,http,smtp,telnet 2.机密性:plaintext-->转换规则-->ciphertext ciphertext-->转换规则-->plaintext 完整性:单项加密算法,提取数据特征码.输入一样,输出必然一样:雪崩效应,输入的微小改变,将会引起结果的巨大改变:无论原始数据是多少,结果大小都是相同的:不可逆,无法根据特征码还原原来的数据. 3.密钥 4.对称加密:有加密算法,有密钥 5.密钥交换算法 IKE(Internet Key Excha