首先、若是是運行在internet上的系統,而且若是是個涉及到利益性的系統,不可避免的會遭受各類攻擊(咱們公司的不少系統從OS到DB到webapp就實時有收到攻擊和破解),因此儘量保證安全性將再也不是架構師和安所有門惟一應該考慮的事,全部的開發、運維都應該有相應的安全意識。在文本中,將普及下java的安全體系。html
java安全體系包括四個部分:JCA、JCE、JSSE、JAAS。java
JCA,包括了一個提供者架構以及的數字簽名、消息摘要、認證、加密、密鑰生成與管理、安全隨機數產生等的一系列API,它自己不負責算法的具體實現,任何第三方均可以提供具體的實現並在運行時加載,以下:web
這些接口使得開發者能夠方便的將安全集成到應用程序中。JDK中的其餘加密通訊庫不少使用了JCA提供者架構,包括JSSE,SASL,JGSS等。JCA提供的核心類和接口包括以下:算法
Provider
and Security
classes,SecureRandom
, MessageDigest
, Signature
, Cipher
, Mac
, KeyFactory
, SecretKeyFactory
, KeyPairGenerator
, KeyGenerator
, KeyAgreement
, AlgorithmParameters
,AlgorithmParameterGenerator
, KeyStore
, and CertificateFactory
, engine classes,Key
interfaces and classes詳細可見http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.htmlapache
JSSE,簡單地說,JSSE是SSL和TLS的java版本框架和實現,提供了數據加密,服務器認證,客戶端認證,消息完整性特性,可支持HTTP、telnet、FTP和TCPIP。經過抽象底層的安全算法和握手機制,JSSE最小化了開發SSL應用的複雜性。JSSE提供的加密特性包括:瀏覽器
JSSE的主要類和接口在javax.net和javax.net.ssl中,詳細可參考http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html。關於SSL的詳細說明,可參考http://www.cnblogs.com/zhjh256/p/6287679.html安全
JAAS,應該來講,在實際中,JAAS的使用頻率並無另外三個的高,若是須要詳細瞭解,可參考https://docs.oracle.com/javase/7/docs/technotes/guides/security/jaas/JAASRefGuide.html。服務器
JCE,和JCA、JSSE不一樣,JCE不包含在標準的JDK安裝包中,須要從http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html獨立下載。架構
在java加解密中,除了jdk自帶的外,另外兩個主要的加解密算法的提供者爲bouncy castle和apache common codec,它們提供了額外的算法以及在JDK基礎上提升了易用性。oracle
java根證書倉庫,單獨的TLS庫是沒有什麼用的,因此不管是JVM廠商、瀏覽器廠商、OS廠商一般都會在各自的發行包中包含已經經過認證的根證書列表,在java中體如今truststore中,也就是TrustManagerFactory。
最後,Keytool。由於java不在單獨的文件裏面存儲證書和私鑰,而是打包在專有的keystore中,因此就java而言,keytool也算是關鍵的一部分。