Author: markt
Date: Mon Jan  8 11:44:24 2018
New Revision: 1820552

URL: http://svn.apache.org/viewvc?rev=1820552&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=61566
Expose the currently in use certificate chain and list of trusted certificates 
for all virtual hosts configured using the JSSE style (keystore) TLS 
configuration via the Manager web application.

Added:
    tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCerts.jsp
      - copied, changed from r1817997, 
tomcat/trunk/webapps/manager/WEB-INF/jsp/connectorCerts.jsp
    tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorTrustedCerts.jsp
      - copied unchanged from r1817999, 
tomcat/trunk/webapps/manager/WEB-INF/jsp/connectorTrustedCerts.jsp
Modified:
    tomcat/tc8.5.x/trunk/   (props changed)
    
tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java
    
tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/LocalStrings.properties
    tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SSLContext.java
    
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java
    
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java
    tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml
    tomcat/tc8.5.x/trunk/webapps/docs/manager-howto.xml
    tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCiphers.jsp

Propchange: tomcat/tc8.5.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan  8 11:44:24 2018
@@ -1,2 +1,2 @@
 /tomcat/tc8.0.x/trunk:1809644
-/tomcat/trunk:1734785,1734799,1734845,1734928,1735041,1735044,1735480,1735577,1735597,1735599-1735600,1735615,1736145,1736162,1736209,1736280,1736297,1736299,1736489,1736646,1736703,1736836,1736849,1737104-1737105,1737112,1737117,1737119-1737120,1737155,1737157,1737192,1737280,1737339,1737632,1737664,1737715,1737748,1737785,1737834,1737860,1737903,1737959,1738005,1738007,1738014-1738015,1738018,1738022,1738039,1738043,1738059-1738060,1738147,1738149,1738174-1738175,1738261,1738589,1738623-1738625,1738643,1738816,1738850,1738855,1738946-1738948,1738953-1738954,1738979,1738982,1739079-1739081,1739087,1739113,1739153,1739172,1739176,1739191,1739474,1739492,1739726,1739762,1739775,1739814,1739817-1739818,1739975,1740131,1740324,1740465,1740495,1740508-1740509,1740520,1740535,1740707,1740803,1740810,1740969,1740980,1740991,1740997,1741015,1741033,1741036,1741058,1741060,1741080,1741147,1741159,1741164,1741173,1741181,1741190,1741197,1741202,1741208,1741213,1741221,1741225,1741232,1741409
 
,1741501,1741677,1741892,1741896,1741984,1742023,1742042,1742071,1742090,1742093,1742101,1742105,1742111,1742139,1742146,1742148,1742166,1742181,1742184,1742187,1742246,1742248-1742251,1742263-1742264,1742268,1742276,1742369,1742387,1742448,1742509-1742512,1742917,1742919,1742933,1742975-1742976,1742984,1742986,1743019,1743115,1743117,1743124-1743125,1743134,1743425,1743554,1743679,1743696-1743698,1743700-1743701,1744058,1744064-1744065,1744125,1744149,1744194,1744229,1744270,1744323,1744432,1744684,1744697,1744705,1744713,1744760,1744786,1745083,1745142-1745143,1745145,1745177,1745179-1745180,1745227,1745248,1745254,1745337,1745467,1745473,1745535,1745576,1745735,1745744,1746304,1746306-1746307,1746319,1746327,1746338,1746340-1746341,1746344,1746427,1746441,1746473,1746490,1746492,1746495-1746496,1746499-1746501,1746503-1746507,1746509,1746549,1746551,1746554,1746556,1746558,1746584,1746620,1746649,1746724,1746939,1746989,1747014,1747028,1747035,1747210,1747225,1747234,1747253,1747
 
404,1747506,1747536,1747924,1747980,1747993,1748001,1748253,1748452,1748547,1748629,1748676,1748715,1749287,1749296,1749328,1749373,1749465,1749506,1749508,1749665-1749666,1749763,1749865-1749866,1749898,1749978,1749980,1750011,1750015,1750056,1750480,1750617,1750634,1750692,1750697,1750700,1750703,1750707,1750714,1750718,1750723,1750774,1750899,1750975,1750995,1751061,1751097,1751173,1751438,1751447,1751463,1751702,1752212,1752737,1752745,1753078,1753080,1753358,1753363,1754111,1754140-1754141,1754281,1754310,1754445,1754467,1754494,1754496,1754528,1754532-1754533,1754613,1754714,1754874,1754941,1754944,1754950-1754951,1755005,1755007,1755009,1755132,1755180-1755181,1755185,1755190,1755204-1755206,1755208,1755214,1755224,1755227,1755230,1755629,1755646-1755647,1755650,1755653,1755675,1755680,1755683,1755693,1755717,1755731-1755737,1755812,1755828,1755884,1755890,1755918-1755919,1755942,1755958,1755960,1755970,1755993,1756013,1756019,1756039,1756056,1756083-1756114,1756175,1756288-1
 
756289,1756408-1756410,1756778,1756798,1756878,1756898,1756939,1757123-1757124,1757126,1757128,1757132-1757133,1757136,1757145,1757167-1757168,1757175,1757180,1757182,1757195,1757271,1757278,1757347,1757353-1757354,1757363,1757374,1757399,1757406,1757408,1757485,1757495,1757499,1757527,1757578,1757684,1757722,1757727,1757790,1757799,1757813,1757853,1757883,1757903,1757976,1757997,1758000,1758058,1758072-1758075,1758078-1758079,1758223,1758257,1758261,1758276,1758292,1758369,1758378-1758383,1758421,1758423,1758425-1758427,1758430,1758443,1758448,1758459,1758483,1758486-1758487,1758499,1758525,1758556,1758580,1758582,1758584,1758588,1758842,1759019,1759212,1759224,1759227,1759252,1759274,1759513-1759516,1759611,1759757,1759785-1759790,1760005,1760022,1760109-1760110,1760135,1760200-1760201,1760227,1760300,1760397,1760446,1760454,1760640,1760648,1761057,1761422,1761491,1761498,1761500-1761501,1761550,1761553,1761572,1761574,1761625-1761626,1761628,1761682,1761740,1761752,1762051-176205
 
3,1762123,1762168,1762172,1762182,1762201-1762202,1762204,1762208,1762288,1762296,1762324,1762348,1762353,1762362,1762374,1762492,1762503,1762505,1762541,1762608,1762710,1762753,1762766,1762769,1762944,1762947,1762953,1763167,1763179,1763232,1763259,1763271-1763272,1763276-1763277,1763319-1763320,1763370,1763372,1763375,1763377,1763393,1763412,1763430,1763450,1763462,1763505,1763511-1763512,1763516,1763518,1763520,1763529,1763559,1763565,1763568,1763574,1763619,1763634-1763635,1763718,1763748,1763786,1763798-1763799,1763810,1763813,1763815,1763819,1763831,1764083,1764425,1764646,1764648-1764649,1764659,1764663,1764682,1764862,1764866-1764867,1764870,1764897,1765133,1765299,1765358,1765439,1765447,1765495,1765502,1765569-1765571,1765579,1765582,1765589-1765590,1765794,1765801,1765813,1765815,1766276,1766514,1766533,1766535,1766664,1766675,1766698,1766700,1766822,1766834,1766840,1767047,1767328,1767362,1767368,1767429,1767471,1767505,1767641-1767644,1767903,1767945-1767946,1768123,176
 
8283,1768520,1768569,1768651,1768762,1768922,1769191,1769263,1769630,1769833,1769975,1770047,1770140,1770180,1770258,1770389,1770656,1770666,1770718,1770762,1770952,1770954,1770956,1770961,1771087,1771126,1771139,1771143,1771149,1771156,1771266,1771316,1771386,1771611,1771613,1771711,1771718,1771723-1771724,1771730,1771743,1771752,1771853,1771963,1772170,1772174,1772223,1772229,1772318-1772319,1772353,1772355,1772554,1772603-1772609,1772849,1772865,1772870,1772872,1772875-1772876,1772881,1772886,1772947,1773306,1773344,1773418,1773756,1773813-1773814,1774052,1774102,1774131,1774161,1774164,1774248,1774253,1774257,1774259,1774262,1774267,1774271,1774303,1774340,1774406,1774412,1774426,1774433,1774522-1774523,1774526,1774528-1774529,1774531,1774732-1774736,1774738-1774739,1774741-1774742,1774749,1774755,1774789,1774858,1774867,1775596,1775985-1775986,1776540,1776937,1776954,1777011,1777173,1777189,1777211,1777524,1777546,1777605,1777619,1777647,1777721-1777722,1777967,1778061,1778138-
 
1778139,1778141-1778150,1778154,1778275-1778276,1778295,1778342,1778348,1778404,1778424,1778426,1778575,1778582,1778600,1778603,1779312,1779370,1779545,1779612,1779622,1779641,1779654,1779708,1779718,1779897,1779899,1779932,1780109,1780120,1780189,1780196,1780488,1780514-1780516,1780601,1780606,1780609-1780610,1780652,1780991,1780995-1780996,1781174,1781569,1781975,1781986,1782116,1782383-1782384,1782566,1782572,1782775,1782779,1782814,1782857,1782868,1782934,1782946-1782947,1782956,1783144-1783147,1783155,1783408,1784182,1784565,1784583,1784657,1784669,1784712,1784723,1784751,1784767,1784806,1784818,1784911,1784926,1784956,1784963,1785032,1785037,1785245,1785271,1785310,1785317,1785643,1785667,1785762,1785774,1785823,1785935,1786051,1786070,1786123-1786124,1786127,1786129,1786341,1786378,1786844,1787200,1787250,1787405,1787701,1787703,1787938,1787959,1787973,1788223-1788224,1788228,1788232,1788241-1788242,1788248,1788323,1788328,1788455,1788460,1788473,1788543-1788544,1788548,17885
 
50,1788554,1788558,1788560,1788567,1788569,1788572,1788647,1788732,1788741,1788747,1788753,1788764,1788771,1788834,1788841,1788852,1788860,1788883,1788890,1789051,1789400,1789415,1789442-1789443,1789447,1789453,1789456,1789458,1789461-1789463,1789465-1789467,1789470,1789472,1789474,1789476,1789479-1789480,1789733,1789735,1789744-1789745,1789937,1789984,1790119,1790180,1790183,1790213,1790376,1790443,1790614,1790983,1790991,1791027-1791028,1791050,1791090,1791095-1791096,1791099,1791101-1791103,1791124,1791129,1791134,1791137,1791298,1791527,1791557,1791970,1792033,1792038,1792055,1792093,1792140,1792460,1792468,1792791,1792957,1793095,1793121,1793123,1793127,1793136,1793139,1793147-1793148,1793266,1793437,1793449,1793460,1793468,1793487,1793498,1793502,1793514,1793682-1793683,1793711-1793712,1793716,1793719,1793736,1793746,1793758,1793771,1793776,1793798,1793802,1793812,1793819,1793844,1793854,1793887,1793891,1793898,1793901-1793902,1793907,1793910,1793980,1794674,1794941-1794942,17
 
95278,1795289,1795298,1795305,1795813,1795893,1796090,1796275,1796693-1796695,1796729,1796806,1796836,1796873,1796878,1797197,1797338,1797344,1797354-1797355,1797516,1797528,1797532,1797536,1797540,1797543,1797677-1797678,1797692,1797694,1797748,1797828,1798126,1798238,1798280,1798371,1798379,1798384,1798390,1798395,1798419,1798505,1798507,1798509,1798533,1798546,1798561,1798977,1799115,1799126,1799164,1799190,1799194,1799216,1799231,1799250,1799253,1799285,1799368,1799412,1799515,1799701-1799702,1799704,1799709,1799885,1799893,1799895,1799916,1800136-1800138,1800202,1800309,1800390,1800617,1800629,1800791,1800816,1800850,1800864,1800867,1800874,1800885,1800981,1800984,1800988,1800992,1801195,1801686,1801688,1801709,1801717,1801774,1801778,1802083,1802195,1802204-1802205,1802210,1802225-1802226,1802229,1802403,1802475,1802490,1802788,1802796,1802803,1802820,1802828,1802833,1802836,1803030,1803038,1803055,1803135,1803165,1803174,1803193,1803205,1803224,1803278,1803281,1803295,1803297
 
,1803446,1803451,1803456,1803459,1803616,1803636,1803828,1803901,1803972,1804040,1804094,1804306,1804461-1804463,1804501,1804506-1804507,1804754,1804813,1804888,1804890,1804903-1804908,1804915,1804917,1805523-1805530,1805550,1805612-1805613,1805637,1805645,1805652,1805726,1805752,1805782,1805826,1806307,1806356,1806445,1806736,1806794,1806798,1806801,1806807,1806873,1806966,1806973,1807004,1807093,1807135,1807205-1807206,1807237,1807242,1807251,1807282,1807455,1807686,1807698,1807713,1807715,1807729,1807742,1807747,1807751,1807755,1808116,1808156,1808266,1808433,1808438-1808439,1808466,1808481-1808482,1808695,1808701,1808766,1809011,1809025,1809141,1809143-1809144,1809146,1809158,1809212,1809214,1809239,1809248,1809263,1809265,1809317,1809434,1809669,1809671,1809674,1809684,1809711,1809828,1809830,1809908-1809909,1809922,1810106,1810110,1810280,1810300,1811031,1811119,1811122,1811132,1811137,1811139,1811174,1811176,1811198-1811201,1811203-1811206,1811220,1811235,1811246,1811327-1811
 
329,1811350,1811560,1811704,1811837-1811839,1811861,1811932,1812087-1812088,1812092,1812094,1812103,1812107,1812113,1812129,1812134-1812136,1812184,1812315,1812401,1812489,1812513,1812617,1813919,1814192,1814195,1814567,1814825,1814973,1814980,1815066,1815069,1815208,1815215,1815318-1815319,1815325,1815385,1815429,1815441-1815442,1815451,1815459,1815465,1815505,1815615,1815793,1815800,1815802,1815806,1815826,1815829,1815834,1815840,1815903,1815944,1815954,1816076,1816078,1816083,1816087,1816120,1816128,1816140,1816147,1816157,1816338,1816431,1816443,1816538,1816541,1816545,1816549-1816550,1816563,1816570,1816647,1816695-1816704,1816716,1816780,1816887,1817089,1817092,1817096,1817104,1817126,1817136-1817137,1817196,1817223,1817298,1817305,1817495,1817517,1817520,1817965,1818179,1818184,1818711,1818919,1818976,1819054,1819057,1819061,1819063,1819068,1819070-1819071,1819074,1819077,1819148,1819903,1820003,1820005,1820138,1820153,1820194,1820196-1820197,1820202,1820206,1820222,1820265,1
 820272,1820276,1820279,1820281,1820302
+/tomcat/trunk:1734785,1734799,1734845,1734928,1735041,1735044,1735480,1735577,1735597,1735599-1735600,1735615,1736145,1736162,1736209,1736280,1736297,1736299,1736489,1736646,1736703,1736836,1736849,1737104-1737105,1737112,1737117,1737119-1737120,1737155,1737157,1737192,1737280,1737339,1737632,1737664,1737715,1737748,1737785,1737834,1737860,1737903,1737959,1738005,1738007,1738014-1738015,1738018,1738022,1738039,1738043,1738059-1738060,1738147,1738149,1738174-1738175,1738261,1738589,1738623-1738625,1738643,1738816,1738850,1738855,1738946-1738948,1738953-1738954,1738979,1738982,1739079-1739081,1739087,1739113,1739153,1739172,1739176,1739191,1739474,1739492,1739726,1739762,1739775,1739814,1739817-1739818,1739975,1740131,1740324,1740465,1740495,1740508-1740509,1740520,1740535,1740707,1740803,1740810,1740969,1740980,1740991,1740997,1741015,1741033,1741036,1741058,1741060,1741080,1741147,1741159,1741164,1741173,1741181,1741190,1741197,1741202,1741208,1741213,1741221,1741225,1741232,1741409
 
,1741501,1741677,1741892,1741896,1741984,1742023,1742042,1742071,1742090,1742093,1742101,1742105,1742111,1742139,1742146,1742148,1742166,1742181,1742184,1742187,1742246,1742248-1742251,1742263-1742264,1742268,1742276,1742369,1742387,1742448,1742509-1742512,1742917,1742919,1742933,1742975-1742976,1742984,1742986,1743019,1743115,1743117,1743124-1743125,1743134,1743425,1743554,1743679,1743696-1743698,1743700-1743701,1744058,1744064-1744065,1744125,1744149,1744194,1744229,1744270,1744323,1744432,1744684,1744697,1744705,1744713,1744760,1744786,1745083,1745142-1745143,1745145,1745177,1745179-1745180,1745227,1745248,1745254,1745337,1745467,1745473,1745535,1745576,1745735,1745744,1746304,1746306-1746307,1746319,1746327,1746338,1746340-1746341,1746344,1746427,1746441,1746473,1746490,1746492,1746495-1746496,1746499-1746501,1746503-1746507,1746509,1746549,1746551,1746554,1746556,1746558,1746584,1746620,1746649,1746724,1746939,1746989,1747014,1747028,1747035,1747210,1747225,1747234,1747253,1747
 
404,1747506,1747536,1747924,1747980,1747993,1748001,1748253,1748452,1748547,1748629,1748676,1748715,1749287,1749296,1749328,1749373,1749465,1749506,1749508,1749665-1749666,1749763,1749865-1749866,1749898,1749978,1749980,1750011,1750015,1750056,1750480,1750617,1750634,1750692,1750697,1750700,1750703,1750707,1750714,1750718,1750723,1750774,1750899,1750975,1750995,1751061,1751097,1751173,1751438,1751447,1751463,1751702,1752212,1752737,1752745,1753078,1753080,1753358,1753363,1754111,1754140-1754141,1754281,1754310,1754445,1754467,1754494,1754496,1754528,1754532-1754533,1754613,1754714,1754874,1754941,1754944,1754950-1754951,1755005,1755007,1755009,1755132,1755180-1755181,1755185,1755190,1755204-1755206,1755208,1755214,1755224,1755227,1755230,1755629,1755646-1755647,1755650,1755653,1755675,1755680,1755683,1755693,1755717,1755731-1755737,1755812,1755828,1755884,1755890,1755918-1755919,1755942,1755958,1755960,1755970,1755993,1756013,1756019,1756039,1756056,1756083-1756114,1756175,1756288-1
 
756289,1756408-1756410,1756778,1756798,1756878,1756898,1756939,1757123-1757124,1757126,1757128,1757132-1757133,1757136,1757145,1757167-1757168,1757175,1757180,1757182,1757195,1757271,1757278,1757347,1757353-1757354,1757363,1757374,1757399,1757406,1757408,1757485,1757495,1757499,1757527,1757578,1757684,1757722,1757727,1757790,1757799,1757813,1757853,1757883,1757903,1757976,1757997,1758000,1758058,1758072-1758075,1758078-1758079,1758223,1758257,1758261,1758276,1758292,1758369,1758378-1758383,1758421,1758423,1758425-1758427,1758430,1758443,1758448,1758459,1758483,1758486-1758487,1758499,1758525,1758556,1758580,1758582,1758584,1758588,1758842,1759019,1759212,1759224,1759227,1759252,1759274,1759513-1759516,1759611,1759757,1759785-1759790,1760005,1760022,1760109-1760110,1760135,1760200-1760201,1760227,1760300,1760397,1760446,1760454,1760640,1760648,1761057,1761422,1761491,1761498,1761500-1761501,1761550,1761553,1761572,1761574,1761625-1761626,1761628,1761682,1761740,1761752,1762051-176205
 
3,1762123,1762168,1762172,1762182,1762201-1762202,1762204,1762208,1762288,1762296,1762324,1762348,1762353,1762362,1762374,1762492,1762503,1762505,1762541,1762608,1762710,1762753,1762766,1762769,1762944,1762947,1762953,1763167,1763179,1763232,1763259,1763271-1763272,1763276-1763277,1763319-1763320,1763370,1763372,1763375,1763377,1763393,1763412,1763430,1763450,1763462,1763505,1763511-1763512,1763516,1763518,1763520,1763529,1763559,1763565,1763568,1763574,1763619,1763634-1763635,1763718,1763748,1763786,1763798-1763799,1763810,1763813,1763815,1763819,1763831,1764083,1764425,1764646,1764648-1764649,1764659,1764663,1764682,1764862,1764866-1764867,1764870,1764897,1765133,1765299,1765358,1765439,1765447,1765495,1765502,1765569-1765571,1765579,1765582,1765589-1765590,1765794,1765801,1765813,1765815,1766276,1766514,1766533,1766535,1766664,1766675,1766698,1766700,1766822,1766834,1766840,1767047,1767328,1767362,1767368,1767429,1767471,1767505,1767641-1767644,1767903,1767945-1767946,1768123,176
 
8283,1768520,1768569,1768651,1768762,1768922,1769191,1769263,1769630,1769833,1769975,1770047,1770140,1770180,1770258,1770389,1770656,1770666,1770718,1770762,1770952,1770954,1770956,1770961,1771087,1771126,1771139,1771143,1771149,1771156,1771266,1771316,1771386,1771611,1771613,1771711,1771718,1771723-1771724,1771730,1771743,1771752,1771853,1771963,1772170,1772174,1772223,1772229,1772318-1772319,1772353,1772355,1772554,1772603-1772609,1772849,1772865,1772870,1772872,1772875-1772876,1772881,1772886,1772947,1773306,1773344,1773418,1773756,1773813-1773814,1774052,1774102,1774131,1774161,1774164,1774248,1774253,1774257,1774259,1774262,1774267,1774271,1774303,1774340,1774406,1774412,1774426,1774433,1774522-1774523,1774526,1774528-1774529,1774531,1774732-1774736,1774738-1774739,1774741-1774742,1774749,1774755,1774789,1774858,1774867,1775596,1775985-1775986,1776540,1776937,1776954,1777011,1777173,1777189,1777211,1777524,1777546,1777605,1777619,1777647,1777721-1777722,1777967,1778061,1778138-
 
1778139,1778141-1778150,1778154,1778275-1778276,1778295,1778342,1778348,1778404,1778424,1778426,1778575,1778582,1778600,1778603,1779312,1779370,1779545,1779612,1779622,1779641,1779654,1779708,1779718,1779897,1779899,1779932,1780109,1780120,1780189,1780196,1780488,1780514-1780516,1780601,1780606,1780609-1780610,1780652,1780991,1780995-1780996,1781174,1781569,1781975,1781986,1782116,1782383-1782384,1782566,1782572,1782775,1782779,1782814,1782857,1782868,1782934,1782946-1782947,1782956,1783144-1783147,1783155,1783408,1784182,1784565,1784583,1784657,1784669,1784712,1784723,1784751,1784767,1784806,1784818,1784911,1784926,1784956,1784963,1785032,1785037,1785245,1785271,1785310,1785317,1785643,1785667,1785762,1785774,1785823,1785935,1786051,1786070,1786123-1786124,1786127,1786129,1786341,1786378,1786844,1787200,1787250,1787405,1787701,1787703,1787938,1787959,1787973,1788223-1788224,1788228,1788232,1788241-1788242,1788248,1788323,1788328,1788455,1788460,1788473,1788543-1788544,1788548,17885
 
50,1788554,1788558,1788560,1788567,1788569,1788572,1788647,1788732,1788741,1788747,1788753,1788764,1788771,1788834,1788841,1788852,1788860,1788883,1788890,1789051,1789400,1789415,1789442-1789443,1789447,1789453,1789456,1789458,1789461-1789463,1789465-1789467,1789470,1789472,1789474,1789476,1789479-1789480,1789733,1789735,1789744-1789745,1789937,1789984,1790119,1790180,1790183,1790213,1790376,1790443,1790614,1790983,1790991,1791027-1791028,1791050,1791090,1791095-1791096,1791099,1791101-1791103,1791124,1791129,1791134,1791137,1791298,1791527,1791557,1791970,1792033,1792038,1792055,1792093,1792140,1792460,1792468,1792791,1792957,1793095,1793121,1793123,1793127,1793136,1793139,1793147-1793148,1793266,1793437,1793449,1793460,1793468,1793487,1793498,1793502,1793514,1793682-1793683,1793711-1793712,1793716,1793719,1793736,1793746,1793758,1793771,1793776,1793798,1793802,1793812,1793819,1793844,1793854,1793887,1793891,1793898,1793901-1793902,1793907,1793910,1793980,1794674,1794941-1794942,17
 
95278,1795289,1795298,1795305,1795813,1795893,1796090,1796275,1796693-1796695,1796729,1796806,1796836,1796873,1796878,1797197,1797338,1797344,1797354-1797355,1797516,1797528,1797532,1797536,1797540,1797543,1797677-1797678,1797692,1797694,1797748,1797828,1798126,1798238,1798280,1798371,1798379,1798384,1798390,1798395,1798419,1798505,1798507,1798509,1798533,1798546,1798561,1798977,1799115,1799126,1799164,1799190,1799194,1799216,1799231,1799250,1799253,1799285,1799368,1799412,1799515,1799701-1799702,1799704,1799709,1799885,1799893,1799895,1799916,1800136-1800138,1800202,1800309,1800390,1800617,1800629,1800791,1800816,1800850,1800864,1800867,1800874,1800885,1800981,1800984,1800988,1800992,1801195,1801686,1801688,1801709,1801717,1801774,1801778,1802083,1802195,1802204-1802205,1802210,1802225-1802226,1802229,1802403,1802475,1802490,1802788,1802796,1802803,1802820,1802828,1802833,1802836,1803030,1803038,1803055,1803135,1803165,1803174,1803193,1803205,1803224,1803278,1803281,1803295,1803297
 
,1803446,1803451,1803456,1803459,1803616,1803636,1803828,1803901,1803972,1804040,1804094,1804306,1804461-1804463,1804501,1804506-1804507,1804754,1804813,1804888,1804890,1804903-1804908,1804915,1804917,1805523-1805530,1805550,1805612-1805613,1805637,1805645,1805652,1805726,1805752,1805782,1805826,1806307,1806356,1806445,1806736,1806794,1806798,1806801,1806807,1806873,1806966,1806973,1807004,1807093,1807135,1807205-1807206,1807237,1807242,1807251,1807282,1807455,1807686,1807698,1807713,1807715,1807729,1807742,1807747,1807751,1807755,1808116,1808156,1808266,1808433,1808438-1808439,1808466,1808481-1808482,1808695,1808701,1808766,1809011,1809025,1809141,1809143-1809144,1809146,1809158,1809212,1809214,1809239,1809248,1809263,1809265,1809317,1809434,1809669,1809671,1809674,1809684,1809711,1809828,1809830,1809908-1809909,1809922,1810106,1810110,1810280,1810300,1811031,1811119,1811122,1811132,1811137,1811139,1811174,1811176,1811198-1811201,1811203-1811206,1811220,1811235,1811246,1811327-1811
 
329,1811350,1811560,1811704,1811837-1811839,1811861,1811932,1812087-1812088,1812092,1812094,1812103,1812107,1812113,1812129,1812134-1812136,1812184,1812315,1812401,1812489,1812513,1812617,1813919,1814192,1814195,1814567,1814825,1814973,1814980,1815066,1815069,1815208,1815215,1815318-1815319,1815325,1815385,1815429,1815441-1815442,1815451,1815459,1815465,1815505,1815615,1815793,1815800,1815802,1815806,1815826,1815829,1815834,1815840,1815903,1815944,1815954,1816076,1816078,1816083,1816087,1816120,1816128,1816140,1816147,1816157,1816338,1816431,1816443,1816538,1816541,1816545,1816549-1816550,1816563,1816570,1816647,1816695-1816704,1816716,1816780,1816887,1817089,1817092,1817096,1817104,1817126,1817136-1817137,1817196,1817223,1817298,1817305,1817495,1817517,1817520,1817965,1817997,1817999-1818001,1818004,1818179,1818184,1818711,1818919,1818976,1819054,1819057,1819061,1819063,1819068,1819070-1819071,1819074,1819077,1819148,1819903,1820003,1820005,1820138,1820153,1820194,1820196-1820197,1
 820202,1820206,1820222,1820265,1820272,1820276,1820279,1820281,1820302

Modified: 
tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java?rev=1820552&r1=1820551&r2=1820552&view=diff
==============================================================================
--- 
tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java 
(original)
+++ 
tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java 
Mon Jan  8 11:44:24 2018
@@ -85,6 +85,8 @@ public final class HTMLManagerServlet ex
     static final String sessionsListJspPath = "/WEB-INF/jsp/sessionsList.jsp";
     static final String sessionDetailJspPath = 
"/WEB-INF/jsp/sessionDetail.jsp";
     static final String connectorCiphersJspPath = 
"/WEB-INF/jsp/connectorCiphers.jsp";
+    static final String connectorCertsJspPath = 
"/WEB-INF/jsp/connectorCerts.jsp";
+    static final String connectorTrustedCertsJspPath = 
"/WEB-INF/jsp/connectorTrustedCerts.jsp";
 
     private boolean showProxySessions = false;
 
@@ -138,6 +140,10 @@ public final class HTMLManagerServlet ex
             }
         } else if (command.equals("/sslConnectorCiphers")) {
             sslConnectorCiphers(request, response);
+        } else if (command.equals("/sslConnectorCerts")) {
+            sslConnectorCerts(request, response);
+        } else if (command.equals("/sslConnectorTrustedCerts")) {
+            sslConnectorTrustedCerts(request, response);
         } else if (command.equals("/upload") || command.equals("/deploy") ||
                 command.equals("/reload") || command.equals("/undeploy") ||
                 command.equals("/expire") || command.equals("/start") ||
@@ -535,7 +541,7 @@ public final class HTMLManagerServlet ex
         writer.print(MessageFormat.format(UPLOAD_SECTION, args));
 
         // Diagnostics section
-        args = new Object[9];
+        args = new Object[15];
         args[0] = smClient.getString("htmlManagerServlet.diagnosticsTitle");
         args[1] = smClient.getString("htmlManagerServlet.diagnosticsLeak");
         args[2] = response.encodeURL(
@@ -547,6 +553,14 @@ public final class HTMLManagerServlet ex
                 request.getContextPath() + "/html/sslConnectorCiphers");
         args[7] = 
smClient.getString("htmlManagerServlet.diagnosticsSslConnectorCipherButton");
         args[8] = 
smClient.getString("htmlManagerServlet.diagnosticsSslConnectorCipherText");
+        args[9] = response.encodeURL(
+                request.getContextPath() + "/html/sslConnectorCerts");
+        args[10] = 
smClient.getString("htmlManagerServlet.diagnosticsSslConnectorCertsButton");
+        args[11] = 
smClient.getString("htmlManagerServlet.diagnosticsSslConnectorCertsText");
+        args[12] = response.encodeURL(
+                request.getContextPath() + "/html/sslConnectorTrustedCerts");
+        args[13] = 
smClient.getString("htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton");
+        args[14] = 
smClient.getString("htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText");
         writer.print(MessageFormat.format(DIAGNOSTICS_SECTION, args));
 
         // Server Header Section
@@ -727,6 +741,23 @@ public final class HTMLManagerServlet ex
                 connectorCiphersJspPath).forward(request, response);
     }
 
+
+    protected void sslConnectorCerts(HttpServletRequest request,
+            HttpServletResponse response) throws ServletException, IOException 
{
+        request.setAttribute("certList", getConnectorCerts());
+        getServletContext().getRequestDispatcher(
+                connectorCertsJspPath).forward(request, response);
+    }
+
+
+    protected void sslConnectorTrustedCerts(HttpServletRequest request,
+            HttpServletResponse response) throws ServletException, IOException 
{
+        request.setAttribute("trustedCertList", getConnectorTrustedCerts());
+        getServletContext().getRequestDispatcher(
+                connectorTrustedCertsJspPath).forward(request, response);
+    }
+
+
     /**
      * @see javax.servlet.Servlet#getServletInfo()
      */
@@ -1293,44 +1324,59 @@ public final class HTMLManagerServlet ex
         "<tr>\n" +
         " <td colspan=\"2\" class=\"title\">{0}</td>\n" +
         "</tr>\n" +
+
         "<tr>\n" +
         " <td colspan=\"2\" class=\"header-left\"><small>{1}</small></td>\n" +
         "</tr>\n" +
-        "<tr>\n" +
-        " <td colspan=\"2\">\n" +
-        "<form method=\"post\" action=\"{2}\">\n" +
-        "<table cellspacing=\"0\" cellpadding=\"3\">\n" +
+
         "<tr>\n" +
         " <td class=\"row-left\">\n" +
-        "  <input type=\"submit\" value=\"{4}\">\n" +
+        "  <form method=\"post\" action=\"{2}\">\n" +
+        "   <input type=\"submit\" value=\"{4}\">\n" +
+        "  </form>\n" +
         " </td>\n" +
         " <td class=\"row-left\">\n" +
         "  <small>{3}</small>\n" +
         " </td>\n" +
         "</tr>\n" +
-        "</table>\n" +
-        "</form>\n" +
-        "</td>\n" +
-        "</tr>\n" +
+
         "<tr>\n" +
         " <td colspan=\"2\" class=\"header-left\"><small>{5}</small></td>\n" +
         "</tr>\n" +
-        "<tr>\n" +
-        " <td colspan=\"2\">\n" +
-        "<form method=\"post\" action=\"{6}\">\n" +
-        "<table cellspacing=\"0\" cellpadding=\"3\">\n" +
+
         "<tr>\n" +
         " <td class=\"row-left\">\n" +
-        "  <input type=\"submit\" value=\"{7}\">\n" +
+        "  <form method=\"post\" action=\"{6}\">\n" +
+        "   <input type=\"submit\" value=\"{7}\">\n" +
+        "  </form>\n" +
         " </td>\n" +
         " <td class=\"row-left\">\n" +
         "  <small>{8}</small>\n" +
         " </td>\n" +
         "</tr>\n" +
-        "</table>\n" +
-        "</form>\n" +
-        "</td>\n" +
+
+        "<tr>\n" +
+        " <td class=\"row-left\">\n" +
+        "  <form method=\"post\" action=\"{9}\">\n" +
+        "   <input type=\"submit\" value=\"{10}\">\n" +
+        "  </form>\n" +
+        " </td>\n" +
+        " <td class=\"row-left\">\n" +
+        "  <small>{11}</small>\n" +
+        " </td>\n" +
+        "</tr>\n" +
+
+        "<tr>\n" +
+        " <td class=\"row-left\">\n" +
+        "  <form method=\"post\" action=\"{12}\">\n" +
+        "   <input type=\"submit\" value=\"{13}\">\n" +
+        "  </form>\n" +
+        " </td>\n" +
+        " <td class=\"row-left\">\n" +
+        "  <small>{14}</small>\n" +
+        " </td>\n" +
         "</tr>\n" +
+
         "</table>\n" +
         "<br>";
 }

Modified: 
tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/LocalStrings.properties?rev=1820552&r1=1820551&r2=1820552&view=diff
==============================================================================
--- 
tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/LocalStrings.properties 
(original)
+++ 
tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/LocalStrings.properties 
Mon Jan  8 11:44:24 2018
@@ -48,9 +48,13 @@ htmlManagerServlet.deployWar=WAR or Dire
 htmlManagerServlet.diagnosticsLeak=Check to see if a web application has 
caused a memory leak on stop, reload or undeploy
 htmlManagerServlet.diagnosticsLeakButton=Find leaks
 htmlManagerServlet.diagnosticsLeakWarning=This diagnostic check will trigger a 
full garbage collection. Use it with extreme caution on production systems.
-htmlManagerServlet.diagnosticsSsl=SSL connector configuration diagnostics
-htmlManagerServlet.diagnosticsSslConnectorCipherButton=Connector ciphers
-htmlManagerServlet.diagnosticsSslConnectorCipherText=List the configured 
ciphers for each connector
+htmlManagerServlet.diagnosticsSsl=TLS connector configuration diagnostics
+htmlManagerServlet.diagnosticsSslConnectorCipherButton=Ciphers
+htmlManagerServlet.diagnosticsSslConnectorCipherText=List the configured TLS 
virtual hosts and the ciphers for each.
+htmlManagerServlet.diagnosticsSslConnectorCertsButton=Certificates
+htmlManagerServlet.diagnosticsSslConnectorCertsText=List the configured TLS 
virtual hosts and the certificate chain for each.
+htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=Trusted 
Certificates
+htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText=List the configured 
TLS virtual hosts and the trusted certificates for each.
 htmlManagerServlet.diagnosticsTitle=Diagnostics
 htmlManagerServlet.findleaksList=\
   The following web applications were stopped (reloaded, undeployed), but 
their\n\
@@ -72,6 +76,7 @@ htmlManagerServlet.serverTitle=Server In
 htmlManagerServlet.serverVersion=Tomcat Version
 htmlManagerServlet.title=Tomcat Web Application Manager
 managerServlet.alreadyContext=FAIL - Application already exists at path [{0}]
+managerServlet.certsNotAvailable=Certificate information cannot be obtained 
from this connector at runtime
 managerServlet.deleteFail=FAIL - Unable to delete [{0}]. The continued 
presence of this file may cause problems.
 managerServlet.deployed=OK - Deployed application at context path [{0}]
 managerServlet.deployFailed=FAIL - Failed to deploy application at context 
path [{0}]
@@ -108,12 +113,15 @@ managerServlet.sessiontimeout.unlimited=
 managerServlet.sessiontimeout.expired=[{0}] minutes: [{1}] sessions were 
expired
 managerServlet.sessions=OK - Session information for application at context 
path [{0}]
 managerServlet.sslConnectorCiphers=OK - Connector / SSL Cipher information
+managerServlet.sslConnectorCerts=OK - Connector / Certificate Chain information
+managerServlet.sslConnectorTrustedCerts=OK - Connector / Trusted Certificate 
information
 managerServlet.started=OK - Started application at context path [{0}]
 managerServlet.startFailed=FAIL - Application at context path [{0}] could not 
be started
 managerServlet.stopped=OK - Stopped application at context path [{0}]
 managerServlet.storeConfig.invalidMBean=FAIL - Unable to find the StoreConfig 
Mbean. [{0}] is not a valid name for an MBean.
 managerServlet.storeConfig.noMBean=FAIL - No StoreConfig MBean registered at 
[{0}]. Registration is typically performed by the StoreConfigLifecycleListener.
 managerServlet.threaddump=OK - JVM thread dump
+managerServlet.trustedCertsNotConfigured=No trusted certificates are 
configured for this virtual host
 managerServlet.undeployed=OK - Undeployed application at context path [{0}]
 managerServlet.unknownCommand=FAIL - Unknown command [{0}]
 managerServlet.vminfo=OK - VM info

Modified: 
tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java?rev=1820552&r1=1820551&r2=1820552&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java 
(original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java 
Mon Jan  8 11:44:24 2018
@@ -22,6 +22,8 @@ import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.security.cert.Certificate;
+import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Enumeration;
@@ -30,6 +32,7 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 
 import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
@@ -62,7 +65,9 @@ import org.apache.catalina.util.ServerIn
 import org.apache.tomcat.util.Diagnostics;
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.modeler.Registry;
+import org.apache.tomcat.util.net.SSLContext;
 import org.apache.tomcat.util.net.SSLHostConfig;
+import org.apache.tomcat.util.net.SSLHostConfigCertificate;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.util.security.Escape;
 
@@ -370,6 +375,10 @@ public class ManagerServlet extends Http
             threadDump(writer, smClient, request.getLocales());
         } else if (command.equals("/sslConnectorCiphers")) {
             sslConnectorCiphers(writer, smClient);
+        } else if (command.equals("/sslConnectorCerts")) {
+            sslConnectorCerts(writer, smClient);
+        } else if (command.equals("/sslConnectorTrustedCerts")) {
+            sslConnectorTrustedCerts(writer, smClient);
         } else {
             writer.println(smClient.getString("managerServlet.unknownCommand",
                     command));
@@ -562,10 +571,9 @@ public class ManagerServlet extends Http
         writer.print(Diagnostics.getThreadDump(requestedLocales));
     }
 
-    protected void sslConnectorCiphers(PrintWriter writer,
-            StringManager smClient) {
-        writer.println(smClient.getString(
-                "managerServlet.sslConnectorCiphers"));
+
+    protected void sslConnectorCiphers(PrintWriter writer, StringManager 
smClient) {
+        
writer.println(smClient.getString("managerServlet.sslConnectorCiphers"));
         Map<String,List<String>> connectorCiphers = getConnectorCiphers();
         for (Map.Entry<String,List<String>> entry : 
connectorCiphers.entrySet()) {
             writer.println(entry.getKey());
@@ -577,6 +585,30 @@ public class ManagerServlet extends Http
     }
 
 
+    private void sslConnectorCerts(PrintWriter writer, StringManager smClient) 
{
+        writer.println(smClient.getString("managerServlet.sslConnectorCerts"));
+        Map<String,List<String>> connectorCerts = getConnectorCerts();
+        for (Map.Entry<String,List<String>> entry : connectorCerts.entrySet()) 
{
+            writer.println(entry.getKey());
+            for (String cert : entry.getValue()) {
+                writer.println(cert);
+            }
+        }
+    }
+
+
+    private void sslConnectorTrustedCerts(PrintWriter writer, StringManager 
smClient) {
+        
writer.println(smClient.getString("managerServlet.sslConnectorTrustedCerts"));
+        Map<String,List<String>> connectorTrustedCerts = 
getConnectorTrustedCerts();
+        for (Map.Entry<String,List<String>> entry : 
connectorTrustedCerts.entrySet()) {
+            writer.println(entry.getKey());
+            for (String cert : entry.getValue()) {
+                writer.println(cert);
+            }
+        }
+    }
+
+
     /**
      * Store server configuration.
      *
@@ -1712,4 +1744,84 @@ public class ManagerServlet extends Http
         }
         return result;
     }
+
+
+    protected Map<String,List<String>> getConnectorCerts() {
+        Map<String,List<String>> result = new HashMap<>();
+
+        Engine e = (Engine) host.getParent();
+        Service s = e.getService();
+        Connector connectors[] = s.findConnectors();
+        for (Connector connector : connectors) {
+            if (Boolean.TRUE.equals(connector.getProperty("SSLEnabled"))) {
+                SSLHostConfig[] sslHostConfigs = 
connector.getProtocolHandler().findSslHostConfigs();
+                for (SSLHostConfig sslHostConfig : sslHostConfigs) {
+                    Set<SSLHostConfigCertificate> sslHostConfigCerts =
+                            sslHostConfig.getCertificates();
+                    for (SSLHostConfigCertificate sslHostConfigCert : 
sslHostConfigCerts) {
+                        String name = connector.toString() + "-" + 
sslHostConfig.getHostName() +
+                                "-" + sslHostConfigCert.getType();
+                        List<String> certList = new ArrayList<>();
+                        SSLContext sslContext = 
sslHostConfigCert.getSslContext();
+                        String alias = 
sslHostConfigCert.getCertificateKeyAlias();
+                        if (alias == null) {
+                            alias = "tomcat";
+                        }
+                        X509Certificate[] certs = 
sslContext.getCertificateChain(alias);
+                        if (certs == null) {
+                            
certList.add(sm.getString("managerServlet.certsNotAvailable"));
+                        } else {
+                            for (Certificate cert : certs) {
+                                certList.add(cert.toString());
+                            }
+                        }
+                        result.put(name, certList);
+                    }
+                }
+            } else {
+                List<String> certList = new ArrayList<>(1);
+                certList.add(sm.getString("managerServlet.notSslConnector"));
+                result.put(connector.toString(), certList);
+            }
+        }
+
+        return result;
+    }
+
+
+    protected Map<String,List<String>> getConnectorTrustedCerts() {
+        Map<String,List<String>> result = new HashMap<>();
+
+        Engine e = (Engine) host.getParent();
+        Service s = e.getService();
+        Connector connectors[] = s.findConnectors();
+        for (Connector connector : connectors) {
+            if (Boolean.TRUE.equals(connector.getProperty("SSLEnabled"))) {
+                SSLHostConfig[] sslHostConfigs = 
connector.getProtocolHandler().findSslHostConfigs();
+                for (SSLHostConfig sslHostConfig : sslHostConfigs) {
+                    String name = connector.toString() + "-" + 
sslHostConfig.getHostName();
+                    List<String> certList = new ArrayList<>();
+                    SSLContext sslContext =
+                            
sslHostConfig.getCertificates().iterator().next().getSslContext();
+                    X509Certificate[] certs = sslContext.getAcceptedIssuers();
+                    if (certs == null) {
+                        
certList.add(sm.getString("managerServlet.certsNotAvailable"));
+                    } else if (certs.length == 0) {
+                        
certList.add(sm.getString("managerServlet.trustedCertsNotConfigured"));
+                    } else {
+                        for (Certificate cert : certs) {
+                            certList.add(cert.toString());
+                        }
+                    }
+                    result.put(name, certList);
+                }
+            } else {
+                List<String> certList = new ArrayList<>(1);
+                certList.add(sm.getString("managerServlet.notSslConnector"));
+                result.put(connector.toString(), certList);
+            }
+        }
+
+        return result;
+    }
 }

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SSLContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SSLContext.java?rev=1820552&r1=1820551&r2=1820552&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SSLContext.java 
(original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/SSLContext.java Mon 
Jan  8 11:44:24 2018
@@ -19,6 +19,7 @@ package org.apache.tomcat.util.net;
 
 import java.security.KeyManagementException;
 import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
 
 import javax.net.ssl.KeyManager;
 import javax.net.ssl.SSLEngine;
@@ -47,4 +48,7 @@ public interface SSLContext {
 
     public SSLParameters getSupportedSSLParameters();
 
+    public X509Certificate[] getCertificateChain(String alias);
+
+    public X509Certificate[] getAcceptedIssuers();
 }

Modified: 
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java?rev=1820552&r1=1820551&r2=1820552&view=diff
==============================================================================
--- 
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java 
(original)
+++ 
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java 
Mon Jan  8 11:44:24 2018
@@ -20,6 +20,9 @@ package org.apache.tomcat.util.net.jsse;
 import java.security.KeyManagementException;
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+import java.util.HashSet;
+import java.util.Set;
 
 import javax.net.ssl.KeyManager;
 import javax.net.ssl.SSLEngine;
@@ -27,12 +30,17 @@ import javax.net.ssl.SSLParameters;
 import javax.net.ssl.SSLServerSocketFactory;
 import javax.net.ssl.SSLSessionContext;
 import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509KeyManager;
+import javax.net.ssl.X509TrustManager;
 
 import org.apache.tomcat.util.net.SSLContext;
 
 class JSSESSLContext implements SSLContext {
 
     private javax.net.ssl.SSLContext context;
+    private KeyManager[] kms;
+    private TrustManager[] tms;
+
     JSSESSLContext(String protocol) throws NoSuchAlgorithmException {
         context = javax.net.ssl.SSLContext.getInstance(protocol);
     }
@@ -40,6 +48,8 @@ class JSSESSLContext implements SSLConte
     @Override
     public void init(KeyManager[] kms, TrustManager[] tms, SecureRandom sr)
             throws KeyManagementException {
+        this.kms = kms;
+        this.tms = tms;
         context.init(kms, tms, sr);
     }
 
@@ -67,4 +77,34 @@ class JSSESSLContext implements SSLConte
         return context.getSupportedSSLParameters();
     }
 
+    @Override
+    public X509Certificate[] getCertificateChain(String alias) {
+        X509Certificate[] result = null;
+        if (kms != null) {
+            for (int i = 0; i < kms.length && result == null; i++) {
+                if (kms[i] instanceof X509KeyManager) {
+                    result = ((X509KeyManager) 
kms[i]).getCertificateChain(alias);
+                }
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public X509Certificate[] getAcceptedIssuers() {
+        Set<X509Certificate> certs = new HashSet<>();
+        if (tms != null) {
+            for (TrustManager tm : tms) {
+                if (tm instanceof X509TrustManager) {
+                    X509Certificate[] accepted = ((X509TrustManager) 
tm).getAcceptedIssuers();
+                    if (accepted != null) {
+                        for (X509Certificate c : accepted) {
+                            certs.add(c);
+                        }
+                    }
+                }
+            }
+        }
+        return certs.toArray(new X509Certificate[certs.size()]);
+    }
 }

Modified: 
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java?rev=1820552&r1=1820551&r2=1820552&view=diff
==============================================================================
--- 
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java
 (original)
+++ 
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLContext.java
 Mon Jan  8 11:44:24 2018
@@ -70,6 +70,8 @@ public class OpenSSLContext implements o
     private final SSLHostConfig sslHostConfig;
     private final SSLHostConfigCertificate certificate;
     private OpenSSLSessionContext sessionContext;
+    private X509KeyManager x509KeyManager;
+    private X509TrustManager x509TrustManager;
 
     private final List<String> negotiableProtocols;
 
@@ -291,17 +293,17 @@ public class OpenSSLContext implements o
                         SSLHostConfig.adjustRelativePath(
                                 
sslHostConfig.getCertificateRevocationListPath()));
             } else {
-                X509KeyManager keyManager = chooseKeyManager(kms);
+                x509KeyManager = chooseKeyManager(kms);
                 String alias = certificate.getCertificateKeyAlias();
                 if (alias == null) {
                     alias = "tomcat";
                 }
-                X509Certificate[] chain = 
keyManager.getCertificateChain(alias);
+                X509Certificate[] chain = 
x509KeyManager.getCertificateChain(alias);
                 if (chain == null) {
-                    alias = findAlias(keyManager, certificate);
-                    chain = keyManager.getCertificateChain(alias);
+                    alias = findAlias(x509KeyManager, certificate);
+                    chain = x509KeyManager.getCertificateChain(alias);
                 }
-                PrivateKey key = keyManager.getPrivateKey(alias);
+                PrivateKey key = x509KeyManager.getPrivateKey(alias);
                 StringBuilder sb = new StringBuilder(BEGIN_KEY);
                 String encoded = 
BASE64_ENCODER.encodeToString(key.getEncoded());
                 if (encoded.endsWith("\n")) {
@@ -334,13 +336,13 @@ public class OpenSSLContext implements o
 
             if (tms != null) {
                 // Client certificate verification based on custom trust 
managers
-                final X509TrustManager manager = chooseTrustManager(tms);
+                x509TrustManager = chooseTrustManager(tms);
                 SSLContext.setCertVerifyCallback(ctx, new 
CertificateVerifier() {
                     @Override
                     public boolean verify(long ssl, byte[][] chain, String 
auth) {
                         X509Certificate[] peerCerts = certificates(chain);
                         try {
-                            manager.checkClientTrusted(peerCerts, auth);
+                            x509TrustManager.checkClientTrusted(peerCerts, 
auth);
                             return true;
                         } catch (Exception e) {
                             
log.debug(sm.getString("openssl.certificateVerificationFailed"), e);
@@ -352,7 +354,7 @@ public class OpenSSLContext implements o
                 // certificate issuers, so that their subjects can be presented
                 // by the server during the handshake to allow the client 
choosing
                 // an acceptable certificate
-                for (X509Certificate caCert : manager.getAcceptedIssuers()) {
+                for (X509Certificate caCert : 
x509TrustManager.getAcceptedIssuers()) {
                     SSLContext.addClientCACertificateRaw(ctx, 
caCert.getEncoded());
                     if (log.isDebugEnabled())
                         log.debug(sm.getString("openssl.addedClientCaCert", 
caCert.toString()));
@@ -523,6 +525,32 @@ public class OpenSSLContext implements o
     }
 
     @Override
+    public X509Certificate[] getCertificateChain(String alias) {
+        X509Certificate[] chain = null;
+        if (x509KeyManager != null) {
+            if (alias == null) {
+                alias = "tomcat";
+            }
+            chain = x509KeyManager.getCertificateChain(alias);
+            if (chain == null) {
+                alias = findAlias(x509KeyManager, certificate);
+                chain = x509KeyManager.getCertificateChain(alias);
+            }
+        }
+
+        return chain;
+    }
+
+    @Override
+    public X509Certificate[] getAcceptedIssuers() {
+        X509Certificate[] acceptedCerts = null;
+        if (x509TrustManager != null) {
+            acceptedCerts = x509TrustManager.getAcceptedIssuers();
+        }
+        return acceptedCerts;
+    }
+
+    @Override
     protected void finalize() throws Throwable {
         /*
          * When an SSLHostConfig is replaced at runtime, it is not possible to

Modified: tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml?rev=1820552&r1=1820551&r2=1820552&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml Mon Jan  8 11:44:24 2018
@@ -140,6 +140,12 @@
         MBean documentation so users have a reference to use when constructing
         mbeans-descriptiors.xml files for custom components. (markt)
       </add>
+      <add>
+        <bug>61566</bug>: Expose the currently in use certificate chain and 
list
+        of trusted certificates for all virtual hosts configured using the JSSE
+        style (keystore) TLS configuration via the Manager web application.
+        (markt)
+      </add>
       <fix>
         Partial fix for <bug>61886</bug>. Ensure that multiple threads do not
         attempt to complete the <code>AsyncContext</code> if an I/O error 
occurs

Modified: tomcat/tc8.5.x/trunk/webapps/docs/manager-howto.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/webapps/docs/manager-howto.xml?rev=1820552&r1=1820551&r2=1820552&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/webapps/docs/manager-howto.xml (original)
+++ tomcat/tc8.5.x/trunk/webapps/docs/manager-howto.xml Mon Jan  8 11:44:24 2018
@@ -851,7 +851,7 @@ has been reloaded several times, it may
 
 </subsection>
 
-<subsection name="Connector SSL/TLS diagnostics">
+<subsection name="Connector SSL/TLS cipher information">
 
 <source>http://localhost:8080/manager/text/sslConnectorCiphers</source>
 
@@ -871,6 +871,49 @@ Connector[HTTP/1.1-8443]
   ...</source>
 
 </subsection>
+
+<subsection name="Connector SSL/TLS certificate chain information">
+
+<source>http://localhost:8080/manager/text/sslConnectorCerts</source>
+
+<p>The SSL Connector/Certs diagnostic lists the certificate chain that is
+currently configured for each virtual host.</p>
+
+<p>The response will look something like this:</p>
+<source>OK - Connector / Certificate Chain information
+Connector[HTTP/1.1-8080]
+SSL is not enabled for this connector
+Connector[HTTP/1.1-8443]-_default_-RSA
+[
+[
+  Version: V3
+  Subject: CN=localhost, OU=Apache Tomcat PMC, O=The Apache Software 
Foundation, L=Wakefield, ST=MA, C=US
+  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11
+  ...</source>
+
+</subsection>
+
+<subsection name="Connector SSL/TLS trusted certificate information">
+
+<source>http://localhost:8080/manager/text/sslConnectorTrustedCerts</source>
+
+<p>The SSL Connector/Certs diagnostic lists the trusted certificates that are
+currently configured for each virtual host.</p>
+
+<p>The response will look something like this:</p>
+<source>OK - Connector / Trusted Certificate information
+Connector[HTTP/1.1-8080]
+SSL is not enabled for this connector
+Connector[AJP/1.3-8009]
+SSL is not enabled for this connector
+Connector[HTTP/1.1-8443]-_default_
+[
+[
+  Version: V3
+  Subject: CN=Apache Tomcat Test CA, OU=Apache Tomcat PMC, O=The Apache 
Software Foundation, L=Wakefield, ST=MA, C=US
+  ...</source>
+
+</subsection>
 
 <subsection name="Thread Dump">
 

Copied: tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCerts.jsp 
(from r1817997, tomcat/trunk/webapps/manager/WEB-INF/jsp/connectorCerts.jsp)
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCerts.jsp?p2=tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCerts.jsp&p1=tomcat/trunk/webapps/manager/WEB-INF/jsp/connectorCerts.jsp&r1=1817997&r2=1820552&rev=1820552&view=diff
==============================================================================
--- tomcat/trunk/webapps/manager/WEB-INF/jsp/connectorCerts.jsp (original)
+++ tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCerts.jsp Mon Jan 
 8 11:44:24 2018
@@ -32,12 +32,12 @@
     <meta http-equiv="cache-control" content="no-cache,must-revalidate"/><!-- 
HTTP 1.1 -->
     <meta http-equiv="expires" content="0"/><!-- 0 is an invalid value and 
should be treated as 'now' -->
     <meta http-equiv="content-language" content="en"/>
-    <meta name="copyright" content="copyright 2005-2017 the Apache Software 
Foundation"/>
+    <meta name="copyright" content="copyright 2005-2018 the Apache Software 
Foundation"/>
     <meta name="robots" content="noindex,nofollow,noarchive"/>
     <title>Configured certificate chains per Connector</title>
 </head>
 <body>
-<h1>Configured ciphers per Connector</h1>
+<h1>Configured certificate chains per Connector</h1>
 
 <table border="1" cellpadding="2" cellspacing="2" width="100%">
     <thead>

Modified: tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCiphers.jsp
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCiphers.jsp?rev=1820552&r1=1820551&r2=1820552&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCiphers.jsp 
(original)
+++ tomcat/tc8.5.x/trunk/webapps/manager/WEB-INF/jsp/connectorCiphers.jsp Mon 
Jan  8 11:44:24 2018
@@ -42,7 +42,7 @@
 <table border="1" cellpadding="2" cellspacing="2" width="100%">
     <thead>
         <tr>
-            <th>Connector</th>
+            <th>Connector / TLS Virtual Host</th>
             <th>Enabled Ciphers</th>
         </tr>
     </thead>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to