SSH
对称加密AES DES,非对称加密RSA
平台安全
加密JCA加密框架
加密解密KeyPairGenerator keyPair PublicKey PrivateKey 公钥私钥由API生成
Cipher encodeCipher.init(Cipher.ENCRYPT_MODE,publickey) encodeCipher.doFinal("非对称加密".getBytes(UTF-8))
decoderCipher.init(Cipher.DECRYPT_MODE,privateKey) decoderCipher.doFinal(byte[] data)
数字签名 消息摘要 加密(对称 非对称)
数字签名用签名来验证verify是不是本人发的,签名需要私钥加密,收到签名需要公钥解密,公钥私钥成对,只有对应的公钥能解,能解开说明是发送人本人发的
sign.initSing(privateKey) sign.sing() 加密
sign.initVerify(publicKey) sign.verify(singedDate) 验证
数字证书两种形式,单独cer证书文件,keystore文件,可将cer证书导入keystore或导出
java操作keystore证书,用jks表示java keystore
keyStore.getInstance("jks") keyStore.load(fis,"123456".toCharArray())
jdk/bin自带keytool工具生成证书,公钥放在数字证书中,默认密钥changeit
消息摘要验证消息完整性
身份验证和访问控制
JAAS,JDK自带的用于处理用户认证和授权的标准API
spring security使用JAAS机制进行用户身份认证
安全通信
JSSE,SSL->标准化TLS,HTTPS,浏览器与服务器进行通信,协商加密算法,或得服务端证书,浏览器生成密钥使用证书公钥加密,传给服务器,服务器解密使用密钥加密响应消息传给浏览器,浏览器使用密钥解密
服务器端安装数字证书,如果证书自制非CA认证需要导入证书到客户端认证
JDK提供API,SSLContext.getInstance("TLS")
keyManagerFactory.getInstance("SunX509").init(keystore,passphrase) sslcontext.init(kmf.getKeyManager, null,null)
sslContext.getServerFactory()
公共密钥基础架构PKI
通过RSA算法生成密钥公钥和私钥
证书通过客户端浏览器作为介质,通过浏览器倒入导出,服务端验证需要服务端安装证书,弹出证书界面安装的是客户端验证,一般只需要服务端验证,例如淘宝网验证,真实淘宝网由认证机构颁发CA证书,是CA认可的,冒充的自制的得不到CA认可
HTTPS协议使用密钥对安全加密解密,通过证书中公钥私钥携带,使传输数据保证安全
传统方式单机部署认证
NGINX部署集群环境 认证解决方案
pcks8EncodedKeySpec priPKCS8 = new PCKS8EncodedKeySpec(Base64.decode(privatekey))
KeyFactory keyf = KeyFactory.getInstance("RSA")
PirvateKey privateKey = keyf.generatePrivate(priPKCS8);
jsch java实现的ssh开源框架,可以用来执行shell命令,实现下载上传
new Jsch() 建立session连接,session openChanel建立连接获得channelSftp通道
list文件列表channelSftp.list("目录directory"),返回LsEntry,信息类似dir结构
sftp.put(new FileInputStream(file本地文件,"远程上传文件目录名")
sftp.get("远程下载文件名", new FileOutputStream("本地写入文件名"))