DaLei@home:~$

  • Https安全相关的问题

    1、https采用公司钥加密的方式传输对称秘钥,然后使用对称秘钥进行加密,这样就能保证传输内容的安全性。 2、为什么公私钥加密的方式传输对称加密过程是安全的?服务器有自己的私钥,当客户端访问服务器的时候,服务器会给客户端一个公钥,客户端可以使用公钥对用于内容加密的对称是要加密,发送给服务器,如果服务器传输公钥的过程中被窃取,在客户端发送到服务器中的内容也被窃取,这样窃取者获得公钥,和公钥加密过的对称秘钥,这样窃取者并不能用公钥对加密内容的解密,所以可以保证内容的安全。 3、窃取者可以使用公钥伪造访问吗?窃取者可以窃取传输过程中的公钥,如果窃取者使用窃取的公钥伪造访问,这样确实像一次正常的访问,但是公钥并不是用来进行身份验证的,用其他相关信息进行相关身份认证,这样窃取者并不能用这样的方法。 4、窃取者替换服务器发送给客户端的公钥可以获取内容吗?这样的方式确实可以,客户端使用窃取者的公钥发起访问,窃取者通过私钥解密,这样能容传输的密码就被窃取了。但是CA认证中心的存在让这不可能,只要经过CA认证的方式访问网站,就不可能导致内容被窃取。 5、CA认证的方式。。。 文本你可以加粗, 斜体, 和删除 或者关键字 也可以加个链接 标题一 标题二 这是一个块引用 足够重要的事都可以加块引用 标题三 // Js 代码高亮展示 var fun = function lang(l) { dateformat.i18n = require('./lang/' + l) return true; } # Ruby 代码高亮展示 GitHubPages::Dependencies.gems.each do |gem, version| s.add_dependency(gem, "= #{version}") end 标题四 这是一个无序列表 这是一个无序列表 这是一个无序列表 标题五 这是一个有序列表 这是一个有序列表...

  • AWS VPC 实践总结

    VPC介绍 VPC为AWS资源提供一个逻辑隔离的环境,AWS实例在隔离环境中运行,类似于NAT技术,在VPC内部使用内网地址,然后通过网关和路由表决定对外暴露的地址。如果想从外部访问实例,只需要给实例分配公网IP(自动分配或者使用EIP)并且添加相关路由信息。 VPC通过网关连接外部服务,VPC内部使用local路由信息,可以使用内部的ip访问和连接 VPC实践,区分公私网 1、vpc创建 1个vpc就是一个隔离单元,需要首先创建一个vpc,如图所示,给vpc取一个名字;设置一个ipv4的CIDR地址,这个地址为了跟真实外网地址做区分最好设置成局域网地址(A类:10.0.0.0-10.255.255.255,B类:172.16.0.0-172.31.255.255,C类:192.168.0.0-192.168.255.255);不设置ipv6地址,最后一个使用default,这是官方建议的。 创建成功之后如下图所示 2、为了区分公司网我们需要在上述创建的vpc基础之上新建子网,进入子网tab,创建子网,我们分别创建两个子网,10.0.1.0/24(用作公网)和10.0.2.0/24(用作私网), 如下图, 创建成功之后如下所示,目前它们的路由表都是一样的,使用vpc的默认路由表。接下来我们需要新建路由表 3、创建并展示公私有路由,现在有3个路由表,一个是默认路由表,另外两个是我们新建的路由表。 4、为了能够让10.0.1.0/24能够访问公网我们需要,新建一个网关并添加到公网的路由表中。创建igw并附加到vpc。 修改公网路由表并添加网关路由 5、新建一个该公有子网的一个ec2实例并测试是否成功。配置vpc到vpc-demo,配置子网到subnet-demo-publich, 配置自动获取公有地址。配置安全组打开ssh端口和ICMP。 查看EC2信息,并 ping 52.77.224.159 6、 新建一个该私有子网的一个ec2实例并测试是否成功。并ping 3.1.206.197 7、给私有子网配置NAT网关,首先需要在公有子网中创建NAT网关,然后将私有子网中的路由表中的地址指向nat网关。 这样私有的EC2实例可以访问外网,具体自己操作。 文本你可以加粗, 斜体, 和删除 或者关键字 也可以加个链接 标题一 标题二 这是一个块引用 足够重要的事都可以加块引用 标题三 // Js 代码高亮展示 var fun = function lang(l) { dateformat.i18n = require('./lang/' + l) return true; }...

  • AWS EKS部署Kubernetes应用

    本文中使用eksctl来部署Kubernetes的应用 准备 安装并配置awscli # 使用aws信息登陆 aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: json 安装eksctl curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)\_amd64.tar.gz" | tar xz -C /tmp sudo mv /tmp/eksctl /usr/local/bin eksctl version # GitTag 版本应至少为 0.1.37...

  • 使用Kubernetes部署mysql

    介绍: Mysql是常用的数据库,本文介绍怎么在Kubernetes中部署和使用mysql。 Mysql与redis不同的是,MySQL默认用到磁盘存储数据,Mysql默认需要账号和密码。 下文中所有的资源来自Kubernetes-Deployment 细节: 使用Secret存储密码信息, 如下所示,使用Secret存储两个变量,name和key,使用base64码表示 apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: name: YWRtaW4= # admin key: MWYyZDFlMmU2N2Rm # 1f2d1e2e67df 使用PersistentVolumeClaim使用磁盘资源,可以指定访问模式,存储大小和存储类名 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pvc labels: app: mysql-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 2Gi storageClassName: standard 在mysql中使用Secret和PersistentVolumeClaim资源,环境变量MYSQL_ROOT_PASSWORD使用secret中的内容,容器内的/var/lib/mysql路径挂载在PersistentVolumeClaim申请的资源上。 apiVersion: apps/v1 kind:...

  • Kubernetes服务发现的原理和实例

    介绍: Kubernetes默认会自动配置内部DNS服务,提供轻量级的服务发现。 在Kubernetes 1.11版本之前,DNS服务是基于kube-dns的,在版本1.11的时候引入CoreDNS解决kube-dns所面临的的一些安全和稳定性问题。 Kubernetes服务发现原理: 无论使用什么软件处理DNS记录,都是按照如下的原理进行的: 1、 一个名为kube-dns的服务(1个或多个pod)被创建 2、 kube-dns服务从Kubernetes API中监听service和endpoint事件,并根据需要更新dns服务。这些事件会在你创建、更新或者删除Kubernetes服务和一直对应的pods时被触发。 3、 kubelet设置新pods的/etc/resolv.conf文件中的nameserver参数为kube-dns服务的IP地址,同时设置search选项允许短的hostnames被使用。 4、 在容器中运行的就可以解析hostnames到ip地址。 DNS域名结构: Kubernetes DNS记录实例 Kubernetes 服务的全名是这样的:service.namespace.svc.cluster.local Kubernetes pod是这样的:10.32.0.125.namespace.pod.cluster.local Kubernetes 服务命名端口的SRV记录是这样的: port-name.protocol.service.namespace.svc.cluster.local 上面的所有的Kubernetes自建的,在集群中的应用和微服务可以通着这些DNS名字访问对应的服务。 Kubernetes集群中的pod的resolv.conf文件如下所示: nameserver 10.96.0.10 search default.svc.cluster.local svc.cluster.local cluster.local options ndots:5 使用短域名解析服务 如上,在resolv.conf中列出了需要搜索的一些后缀,所以不需要在使用全名去搜索其他服务。 如果你需要的解析的服务在一个同一个命名空间中,你可以仅仅使用服务名:other-service 如果服务在不同的命名空间中,可以使用如下名字:other-service.other-namespace 如果目标是pod,最少需要如下名字:pod-ip.other-namespace.pod Kubernetes DNS实现的一些细节 在Kubernetes1.11版本之前kube-dns服务由是三个容器组成,它们都在kube-systme命中空间中kube-dns pod中,这三个容器分别是: 1、 kube-dns:运行SkyDNS,作用的DNS域名解析 2、 dnsmasq:一个轻量级的DNS解析器和缓存,缓存来自SkyDNS的响应。 3、 sidecar:负责服务健康检查和生成报告...