acme阿里云篇
1. 证书类型
目前主流的SSL证书主要分为DV SSL(域名型) 、 OV SSL(组织型) 、EV
SSL(增强型)。
DV、OV、EV证书在浏览器中显示的区别
DV类型仅在浏览器显示一个小锁,OV和EV类型证书都包含了企业名称信息,但是,EV证书采用了更加严格的认证标准,浏览器在访问时,会在地址栏显示公司名称,地址栏变成绿色。绿的更加让人信任。
2. ACME协议
ACME全称The Automatic Certificate Management Environment,而acme.sh这个库,则能够在Linux上实现如下功能:
自动向Let’s Encrypt申请证书;
自动调用各大云平台的api接口实现TXT解析配置;
证书下发后自动部署到nginx;
利用定时器,每60天自动更新证书,并完成自动部署。
3. 配置证书
3.1 安装acme.sh
1curl https://get.acme.sh | sh
这个自动安装过程完成了以下几个步骤:
拷贝sh脚本到~/.acme.sh/
创建alias别名acme.sh=~/.acme.sh ...
前言
NFS 是 Network File System
的缩写,即网络文件系统。功能是让客户端通过网络访问不同主机上磁盘里的数据,主要用在类Unix系统上实现文件共享的一种方法。
本例演示 CentOS 7 下安装和配置 NFS 的基本步骤。
环境说明
CentOS 7(Minimal Install)
12$ cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)
本例演示环境如下
Name
IP Addr
Descprition
Server
192.169.0.110
服务端 IP
Client
192.168.0.101
客户端 IP
Windows Client
192.168.0.102
Windows Server 2008
根据官网说明 Chapter
8. Network File System (NFS) - Red Hat Customer Portal,CentOS 7.4
以后,支持 NFS v4.2 不需要 rpcbind 了,但是如果客户端只支持 NFC v ...
一、什么是 Nacos
Nacos
是阿里开源的服务注册中心与配置中心组件,能够帮助开发人员快速实现动态服务发现、服务配置、服务元数据及流量管理。同时能够与
SpringCloud、Kubernetes、Dubbo 等开源生态无缝集成。
Nacos 支持如下核心特性:
服务发现: 支持 DNS 与 RPC 服务发现,也提供原生 SDK
、OpenAPI 等多种服务注册方式和 DNS、HTTP 与 API
等多种服务发现方式。
服务健康监测: Nacos
提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。
动态配置服务: Nacos
提供配置统一管理功能,能够帮助我们将配置以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态 DNS 服务: Nacos 支持动态 DNS
服务权重路由,能够让我们很容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单
DNS 解析服务。
服务及其元数据管理: Nacos
支持从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的 ...
创建 Provisioner
要使用
StorageClass,我们就得安装对应的自动配置程序,比如我们这里存储后端使用的是
nfs,那么我们就需要使用到一个 nfs-client 的自动配置程序,我们也叫它
Provisioner,这个程序使用我们已经配置好的 nfs
服务器,来自动创建持久卷,也就是自动帮我们创建 PV。
自动创建的 PV
以${namespace}-${pvcName}-${pvName}这样的命名格式创建在 NFS
服务器上的共享数据目录中
而当这个 PV
被回收后会以archieved-${namespace}-${pvcName}-${pvName}这样的命名格式存在
NFS 服务器上。
当然在部署nfs-client之前,我们需要先成功安装上 nfs
服务器,前面的课程中我们已经过了,服务地址是10.151.30.57,共享数据目录是**/data/k8s/**,然后接下来我们部署
nfs-client 即可,我们也可以直接参考nfs-client
的文档,进行安装即可。
第一步:配置
Deployment,将里面的对应的参数替换成我们自己的 nfs
...
后端开发
未读Java设计模式学习
简单记录Java中23种设计模式的应用,方便后期查看。
创建型模式
简单工厂模式
简单工厂模式严格意义上来说,并不属于设计模式中的一种,不过这里还是简单记录下。
定义:由一个工厂对象决定创建出哪一种类型实例。客户端只需传入工厂类的参数,无心关心创建过程。
优点:具体产品从客户端代码中抽离出来,解耦。
缺点:工厂类职责过重,增加新的类型时,得修改工程类得代码,违背开闭原则。
举例:新建Fruit水果抽象类,包含eat抽象方法:
1234public abstract class Fruit { public abstract void eat();}
其实现类Apple:
123456public class Apple extends Fruit{ @Override public void eat() { System.out.println("吃🍎"); }}
新建创建Fruit的工厂类:
12345678910public class FruitFactory { public Fruit produce(S ...
后端开发
未读Java 对称加密算法
对称加密算法加密和解密使用的是同一份秘钥,解密是加密的逆运算。对称加密算法加密速度快,密文可逆,一旦秘钥文件泄露,就会导致原始数据暴露。对称加密的结果一般使用Base64算法编码,便于阅读和传输。JDK8支持的对称加密算法主要有DES、DESede、AES、Blowfish,以及RC2和RC4等。不同的算法秘钥长度不同,秘钥长度越长,加密安全性越高。
DES
DES(Data Encryption
Standard,数据加密标准)算法是对称加密算法领域中的典型算法,DES算法秘钥较短,以现在计算机的计算能力,DES算法加密的数据在24小时内可能被破解。所以DES算法已经被淘汰,建议使用AES算法,不过这里还是简单了解下。
JDK8仅支持56位长度的DES秘钥,下面举个JDK8实现DES加密的例子:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748import org.junit.Test;import javax.crypto.Ciphe ...
后端开发
未读Java 数字签名算法
数字签名算法可以看成是带秘钥的消息摘要算法,用于验证数据完整性、认证数据来源,并起到抗否认的作用。遵循私钥加签,公钥验签的规则,数字签名算法是非对称加密算法和消息摘要算法的结合体。数字签名算法主要包括RSA和DSA。这节记录下这两种算法在JDK8下的实现。
数字签名加签验签流程分为以下几步:
A在本地构建秘钥对,并将公钥发布给B;
A使用私钥对数据进行签名;
A发送签名和数据给B;
B使用公钥对签名和数据进行验签。
RSA
RSA数字签名算法主要分为MD系列和SHA系列两大类。MD系列主要包括MD2withRSA和MD5withRSA共2种数字签名算法;SHA系列主要包括SHA1withRSA、SHA224withRSA、SHA256withRSA、SHA384withRSA和SHA512withRSA共5种数字签名算法。
代码示例:
1234567891011121314151617181920212223242526272829303132333435363738394041424344import org.junit.Test;import java. ...
后端开发
未读Java 消息摘要算法
消息摘要算法是单向不可逆的,无法通过加密后的散列值反推原始值,相同的内容用同样的摘要算法获得的散列值是一样的,所以常用于验证数据的完整性。
该算法主要分为三大类:MD(Message Digest,消息摘要算法)、SHA(Secure
HashAlgorithm,安全散列算法)和MAC(Message Authentication
Code,消息认证码算法)。MD系列算法包括MD2、MD4和MD5共3种算法;SHA算法主要包括其代表算法SHA-1和SHA-1算法的变种SHA-2系列算法(包含SHA-224、SHA-256、SHA-384和SHA-512);MAC算法综合了上述两种算法,主要包括HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384和HmacSHA512算法。这节主要记录下JDK8对这些算法的支持情况。
消息摘要算法的结果我们一般将其转换为16进制字符串,方便阅读传输。
MD系列算法
MD5算法是MD系列算法的代表,由MD2、MD4等算法演变而来。无论采用哪种MD算法,结果都是32字节的16进制字符串。JDK8只支持MD2和M ...
后端开发
未读Java Base64算法
Base64
算法并不是加密算法,它的出现是为了解决ASCII码在传输过程中可能出现乱码的问题。Base64是网络上最常见的用于传输8bit字节码的可读性编码算法之一。可读性编码算法不是为了保护数据的安全性,而是为了可读性。可读性编码不改变信息内容,只改变信息内容的表现形式。Base64使用了64种字符:大写A到Z、小写a到z、数字0到9、“+”和“/”,故得此名。
储备知识Byte和bit
Byte:字节,数据存储的基本单位;
bit:比特,也叫位,一个位只能存储0或者1。
关系:1Byte = 8bit。
一个英文字符占1个字节,8位:
123456789@Testpublic void demo1() { String a = "a"; byte[] bytes = a.getBytes(); for (byte b : bytes) { System.out.println(b); System.out.println(Integer.toBinaryString(b)); }}
程序输出:
12 ...
Java 非对称加密算法RSA
非对称加密和对称加密算法相比,多了一把秘钥,为双秘钥模式,一个公开称为公钥,一个保密称为私钥。遵循公钥加密私钥解密,或者私钥加密公钥解密。非对称加密算法源于DH算法,后又有基于椭圆曲线加密算法的密钥交换算法ECDH,不过目前最为流行的非对称加密算法是RSA,本文简单记录下RSA的使用。
RSA算法
RSA算法是最为典型的非对称加密算法,该算法由美国麻省理工学院(MIT)的Ron
Rivest、Adi Shamir和Leonard
Adleman三位学者提出,并以这三位学者的姓氏开头字母命名,称为RSA算法。
RSA算法的数据交换过程分为如下几步:
A构建RSA秘钥对;
A向B发布公钥;
A用私钥加密数据发给B;
B用公钥解密数据;
B用公钥加密数据发给A;
A用私钥解密数据。
JDK8支持RSA算法:
算法
秘钥长度
加密模式
填充模式
RSA
512~16384位,64倍数
ECB
NoPadding PKCS1Padding
OAEPWithMD5AndMGF1Padding OAEPWithSHA1AndMGF1Padding
O ...