网络协议安全 java安全

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("本地写入文件名"))

你可能感兴趣的:(网络协议安全 java安全)