CA证书与DHCP服务

CA证书与DHCP服务,第1张

1、创建私有CA并进行证书申请。

1 :创建 CA 私钥

$ openssl genrsa -des3 -out ca.key 4096

2 :生成 CA 的自签名证书,其实 CA 证书就是一个自签名证书

$ openssl req -new -x509 -days 365 -key ca.key -outca.crt

3 :生成需要颁发证书的私钥

$ openssl genrsa -des3 -out server.key 4096

4 :生成要颁发证书的证书签名请求

Ps:证书签名请求当中的 Common Name 必须区别于 CA 的证书里面的 Common

Name

$ openssl req -new -key server.key -out server.csr

5 :创建一个ext文件,内容如下

keyUsage = nonRepudiation, digitalSignature,keyEncipherment

extendedKeyUsage = serverAuth, clientAuth

subjectAltName=@SubjectAlternativeName

[ SubjectAlternativeName ]

DNS.1=abc.com

DNS.2=*.abc.com

6 :用 2 创建的 CA 证书给 4 生成的 签名请求 进行签名

$ openssl x509 -req -days 365 -extfile http.ext -inserver.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

7 :最终会得到一下几个文件

ca.crt: 这个是ca证书,客户端信任该证书意味着会信任该证书颁发出去的所有证书

ca.key: ca证书的密钥

server.key: 服务器密钥,需要配置的

server.csr: 证书签名请求,通常是交给CA机构,这里我们就自己解决了

server.crt: 服务器证书,需要配置的

2、总结ssh常用参数、用法

ssh命令是ssh客户端,允许实现对远程系统经验证地加密安全访问。ssh客户端配置文件是:/etc/ssh/ssh_config

ssh

命令配合的常见选项:

-p port

:远程服务器监听的端口

ssh 192.168.1.8 -p 2222

-b

指定连接的源IP

ssh 192.168.1.8 -p 2222 -b 192.168.1.88

-v

调试模式

ssh 192.168.1.8 -p 2222 -v

-C

压缩方式

-X

支持x11转发支持将远程linux主机上的图形工具在当前设备使用

-t

强制伪tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2 ssh

remoteserver3

-o option

如:-oStrictHostKeyChecking=no

-i

指定私钥文件路径,实现基于key验证,默认使用文件:~/.ssh/id_dsa,

~/.ssh/id_ecdsa,/.ssh/id_ed25519

,/.ssh/id_rsa等

3、总结sshd服务常用参数。服务器端的配置文件: /etc/ssh/sshd_config

常用参数:

Port #

端口号

ListenAddress ipLoginGraceTime 2m #

宽限期

PermitRootLogin yes #

默认ubuntu不允许root远程ssh登录

StrictModes yes #

检查.ssh/文件的所有者,权限等

MaxAuthTries 6

MaxSessions 10 #

同一个连接最大会话

PubkeyAuthentication yes #

基于key验证

PermitEmptyPasswords no #

空密码连接

PasswordAuthentication yes #

基于用户名和密码连接

GatewayPorts no

ClientAliveInterval 10 #

单位:秒

ClientAliveCountMax 3 #

默认3

UseDNS yes #

提高速度可改为no

GSSAPIAuthentication yes #

提高速度可改为no

MaxStartups #

未认证连接最大值,默认值10

Banner /path/file

以下可以限制可登录用户的办法:

AllowUsers user1 user2 user3

DenyUsers

AllowGroups

ssh

服务的最佳实践建议使用非默认端口禁止使用protocol version 1

限制可登录用户设定空闲会话超时时长利用防火墙设置ssh访问策略仅监听特定的IP地址基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ </dev/urandom| head -c 12|

xargs

使用基于密钥的认证禁止使用空密码禁止root用户直接登录限制ssh的访问频度和并发在线数经常分析日志

4、搭建dhcp服务,实现ip地址申请分发

一、配置DHCP服务器

1、安装DHCP服务器软件

[root@centos01 ~]# mount /dev/cdrom /mnt/<!--挂载操作系统光盘-->

mount: /dev/sr0 写保护,将以只读方式挂载

[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-*<!--删除系统自动yum源-->

[root@centos01 ~]# yum -y install dhcp<!--安装DHCP服务 -->

2、建立主配置文件dhcpd.conf

[root@centos01 ~]# vim /etc/dhcp/dhcpd.conf<!--编辑主配置文件-->

:r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example<!--读取默认配置文件-->

ddns-update-style none<!--禁用DNS动态更新-->

option domain-name "benet.com"<!--指定默认搜索域-->

option domain-name-servers 202.106.0.10, 202.106.0.20 

<!--指定DNS服务器地址-->

default-lease-time 600<!--默认租约时间-->

max-lease-time 7200<!--最大租约时间-->

1)/etc/dhcp/dhcpd.conf文件的配置构成

在主配置文件dhcpd.conf中,可以使用声明、参数、选项这三种类型的配置,各自的作用和表现形式如下所述:

声明:用来描述dhcpd服务器中对网络布局的划分,是网络设置的逻辑范围。常见的声明是subnet、host,其中subnet声明用来约束一个网段。host声明用来约束一台特定主机。

参数:由配置关键字和对应的值组成,总是以“”(分号)结束,一般位于指定的声明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)。

选项:由“option”引导,后面跟具体的配置关键字和对应的值,也是以“”结束,用于指定分配给客户机的各种地址参数(如默认网关地址、子网掩码、DNS服务器地址等)。

2)确定dhcpd服务的全局配置

为了使配置文件的结构更加清晰、全局配置通常会放在配置文件dhcod.conf的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述:

ddns-update-style:动态DNS更新模式。用来设置与DHCP服务相关联的DNS数据动态更新模式。在实际的DHCP应用中很少用到该参数。将值设为“none”即可。

default-lease-time:默认租约时间。单位为秒,表示客户端可以从DHCP服务器租用某个IP地址的默认时间。

max-lease-time:最大租约时间。单位为秒,表示允许DHCP客户端请求的最大租约时间,当客户端未请求明确的租约时间时,服务器将采用默认租约时间。

option domain-name:默认搜索区域。未客户机指定解析主机名时的默认搜索域,该配置选项将体现在客户机的/etc/resolv.conf配置文件中,如“search benet.com”。

option domain-name-servers:DNS服务器地址。为客户端指定解析域名时使用的DNS服务器地址,该配置选项同样将体现在客户机的/etc/resolv.conf配置文件中,如“nameserver 202.106.0.20”。需要设置多个DNS服务器地址时,以逗号进行分隔。

3)确定subnet网段声明

一台DHCP服务器可以为多个网段提供服务,因此subnet网段声明必须有而且可以有多个。例如,若要DHCP服务器为192.168.100.0/24网段提供服务,用于自动分配的IP地址范围为192.168.100。100~192.168.100.200,为客户机指定默认网关地址为192.168.100.254,则ke可以修改dhcpd.conf配置文件,参考以下内容调整subnet网段声明:

[root@centos01 ~]# vim /etc/dhcp/dhcpd.conf<!--编辑主配置文件-->

subnet 192.168.100.0 netmask 255.255.255.0 {<!--声明网段地址-->

range 192.168.100.100 192.168.100.200<!--设置地址池,可以有多个-->

option routers 192.168.100.254<!--指定默认网关地址-->

}

4)确定host主机声明

host声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的IP地址(保留地址),这些主机的共同特点是要求每次获取的IP地址相同,以确保服务的稳定性。

host声明通过host关键字指定需要使用保留地址的客户机名称,并使用“hardware ethernet”参数指定该主机的MAC地址,使用“fixed-address”参数指定保留给该主机的IP地址。例如,若要为打印机prtsvr(MAC地址为00:0C:29:0D:BA:6B)分配固定的IP地址192.168.100.101,可以修改dhcpd.conf配置文件,参考以下内容在网段声明内添加host主机声明。

C:\Users\Administrator>getmac

物理地址            传输名称

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

00-0C-29-0D-BA-6B  \Device\Tcpip_{92E3F48B-40F0-4A0D-9604-6386AAAE3233}<!--客户端获取MAC地址-->

[root@centos01 ~]# vim /etc/dhcp/dhcpd.conf

host win7 {

hardware ethernet 00:0C:29:0D:BA:6B<!--客户机的MAC地址-->

fixed-address 192.168.100.101<!--分配给客户机的IP地址-->

}

3、启动dhcpd服务

在启动dhcpd服务之前,应确认提供DHCP服务器的网络接口具有静态指定的固定IP地址,并且至少有一个网络接口的IP地址与DHCP服务器中的一个subnet网段相对应,否则将无法正常启动dhcpd服务。例如,DHCP服务器的IP地址为192.168.100.10,用于为网段192。168.100.0/24内的其他客户机提供自动分配地址服务。

安装dhcp软件包以后,对应的系统服务脚本位于/usr/lib/systemd/system/dhcpd.service,可以使用systemd服务进行控制。例如,执行以下操作可以启动dhcpd服务,并检查UDP的67端口是否在监听,以确认DHCP服务器是否正常。

[root@centos01 ~]# systemctl start dhcpd<!--启动dhcp服务-->

[root@centos01 ~]# systemctl enable dhcpd<!--设置服务开机自动启动-->

[root@centos01 ~]# netstat -anptu | grep 67<!--监听DHCP服务端口号-->

udp        0      0 0.0.0.0:67              0.0.0.0:*                          2102/dhcpd         

udp        0      0 0.0.0.0:67              0.0.0.0:*                          1064/dnsmasq       

注意:需要关闭、重启dhcpd服务时,只要将上述操作命令中的“start”改为“stop”或“restart”即可。

二、使用DHCP客户端

1、windows客户端

ipconfig /renew<!--可以为主机重新获取新的IP地址-->

ipconfig /release<!--释放IP地址-->

tracert IP地址<!--可以测试从当前主机到目的主机经过的网络节点-->

route print<!--查看路由表-->

2、Linux客户端

在Linux客户机中可以设置使用DHCP的方式获取地址。只需要编辑对应网卡的配置文件,修改或添加“BOOTPROTO=dhcp”配置行,并重新加载配置文件或者重新启动network服务即可。例如,执行以下操作可修改网卡配置文件,并重新加载配置以通过DHCP方式自动获取地址:

[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=dhcp

DEFROUTE=yes

NAME=ens32

DEVICE=ens32

ONBOOT=yes

[root@centos02 ~]# ifdown ens32 ifup ens32

[root@centos02 ~]# systemctl restart network

在Linux客户机中,还可以使用dhclient工具来测试DHCP服务器。若直接执行“dhclient”命令,则dhclient将尝试为除回环接口lo以外的所有网络接口通过DHCP方式申请新的地址,然后自动转入后台继续运行。当然,测试时可以指定一个具体的网络接口,并结合“-d”选项使其在前台运行,测试完毕后按Ctrl+C组合键终止。例如,执行“dhclient -d ens32”命令后,可以为网卡ens32自动获取新的IP地址,并显示获取过程。

[root@centos02 ~]# dhclient -d ens32

Internet Systems Consortium DHCP Client 4.2.5

Copyright 2004-2013 Internet Systems Consortium.

All rights reserved.

For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/ens32/00:0c:29:97:5c:9f

Sending on  LPF/ens32/00:0c:29:97:5c:9f

Sending on  Socket/fallback

DHCPDISCOVER on ens32 to 255.255.255.255 port 67 interval 4 (xid=0x5364e17f)

DHCPDISCOVER on ens32 to 255.255.255.255 port 67 interval 6 (xid=0x5364e17f)

DHCPDISCOVER on ens32 to 255.255.255.255 port 67 interval 14 (xid=0x5364e17f)<!--DHCP发现-->

DHCPREQUEST on ens32 to 255.255.255.255 port 67 (xid=0x5364e17f)<!--DHCP请求-->

DHCPOFFER from 192.168.100.10<!--DHCP提供-->

DHCPACK from 192.168.100.10 (xid=0x5364e17f)<!--DHCP确认-->

bound to 192.168.100.102 -- renewal in 229 seconds.

............<!--按Ctrl+C组合键终止-->

客户端需要通过dhclient命令释放获取的IP租约时,可以结合“-r”选项。例如,执行以下的“dhclient -r ens32”将会释放之前为网卡ens32获取的IP租约。此时再通过执行“ifconfig ens32”命令就看不到分配的IP地址了。

[root@centos02 ~]# dhclient -r ens32

首先你要安装的ca证书其实是一个叫SSL的证书

安装办法就是把你的域名绑定上一个ip,

然后用这个域名去申请一个证书SSL证书,会给你两个类似秘钥的文件,

然后你放到你的服务器上一个目录下,用nginx之类的服务器配置443端口的服务就可以了

想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B 公司的所有人都不认识他,他咋办捏?常用的办法是带公司开的一张介绍信,在信中说:兹有张三先生前往贵公司办理业务,请给予接洽......云云。然后在信上敲上A公司的公章。

张三先生到了 B 公司后,把介绍信递给 B 公司的前台李四小姐。李小姐一看介绍信上有 A 公司的公章,而且 A 公司是经常和 B 公司有业务往来的,这位李小姐就相信张先生不是歹人了。

这里,A公司就是CA证书

◇ 引入中介机构的介绍信

好,回到刚才的话题。如果和 B 公司有业务往来的公司很多,每个公司的公章都不同,那前台就要懂得分辨各种公章,非常滴麻烦。所以,有某个中介公司 C,发现了这个商机。C公司专门开设了一项“代理公章”的业务。

今后,A 公司的业务员去 B 公司,需要带2个介绍信:

介绍信1

含有 C 公司的公章及 A 公司的公章。并且特地注明:C 公司信任 A 公司。

介绍信2

仅含有 A 公司的公章,然后写上:兹有张三先生前往贵公司办理业务,请给予接洽......云云。

某些不开窍的同学会问了,这样不是增加麻烦了吗?有啥好处捏?

主要的好处在于,对于接待公司的前台,就不需要记住各个公司的公章分别是啥样子的;他/她只要记住中介公司 C 的公章即可。当他/她拿到两份介绍信之后,先对介绍信1的 C 公章,验明正身;确认无误之后,再比对介绍信1和介绍信2的两个 A 公章是否一致。如果是一样的,那就可以证明介绍信2是可以信任的了。

“证书”洋文也叫“digital certificate”或“public key certificate”(专业的解释看“ 这里 ”)。

它是用来证明某某东西确实是某某东西的东西(是不是像绕口令?)。通俗地说,证书就好比例子里面的公章。通过公章,可以证明该介绍信确实是对应的公司发出的。

理论上,人人都可以找个证书工具,自己做一个证书。那如何防止坏人自己制作证书出来骗人捏?请看后续 CA 的介绍。

◇ 什么是CA?

CA是Certificate Authority的缩写,也叫“证书授权中心”。(专业的解释看“ 这里 ”)

它是负责管理和签发证书的第三方机构,就好比例子里面的中介——C 公司。一般来说,CA必须是所有行业和所有公众都信任的、认可的。因此它必须具有足够的权威性。就好比A、B两公司都必须信任C公司,才会找 C 公司作为公章的中介。

CA 证书,顾名思义,就是CA颁发的证书。

前面已经说了,人人都可以找工具制作证书。但是你一个小破孩制作出来的证书是没啥用处的。因为你不是权威的CA机关,你自己搞的证书不具有权威性。

这就好比上述的例子里,某个坏人自己刻了一个公章,盖到介绍信上。但是别人一看,不是受信任的中介公司的公章,就不予理睬。坏蛋的阴谋就不能得逞啦。

文本后续提及的证书,若无特殊说明,均指 CA 证书。

证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;

签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名;

在这个过程注意几点:

1.申请证书不需要提供私钥,确保私钥永远只能服务器掌握;

2.证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名;

3.内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书;

4.证书=公钥+申请者与颁发者信息+签名;

后续内容的需要,这里插播一段共享密钥加密和公开密钥加密

https很好的解决了http的三个缺点(被监听、被篡改、被伪装),https不是一种新的协议,它是http+SSL(TLS)的结合体,SSL是一种独立协议,所以其它协议比如smtp等也可以跟ssl结合。https改变了通信方式,它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式

4.比较完整的过程:

这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3. 传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4. 客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5. 传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6. 服务段解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7. 传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

8. 客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

1.服务器向CA机构获取证书(假设这个证书伪造不了),当浏览器首次请求服务器的时候,服务器返回证书给浏览器。(证书包含:公钥+申请者与颁发者的相关信息+签名)

2.浏览器得到证书后,开始验证证书的相关信息,证书有效(没过期等)。(验证过程,比较复杂,详见上文)。

3.验证完证书后,如果证书有效,客户端是生成一个随机数,然后用证书中的公钥进行加密,加密后,发送给服务器,服务器用私钥进行解密,得到随机数。之后双方便开始用该随机数作为钥匙,对要传递的数据进行加密、解密。

关于https: http://blog.csdn.net/wangjun5159/article/details/51510594

引用参考博客: http://kb.cnblogs.com/page/194742/

关于https的误解: http://www.admin5.com/article/20150523/600106.shtml

数字证书中主题(Subject)中字段的含义

何为SSL/TLS单向认证,双向认证?

单向认证 指的是只有一个对象校验对端的证书合法性。

通常都是client来校验服务器的合法性。那么client需要一个ca.crt,服务器需要server.crt,server.key

双向认证 指的是相互校验,服务器需要校验每个client,client也需要校验服务器。

server 需要 server.key 、server.crt 、ca.crt

client 需要 client.key 、client.crt 、ca.crt


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/660889.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-25
下一篇2023-07-25

发表评论

登录后才能评论

评论列表(0条)

    保存