[{"data":1,"prerenderedAt":15386},["ShallowReactive",2],{"lang-check-\u002Fen":3,"home-blogs-en":4,"home-news-en":14006},null,[5,4189,4423,12880,13258,13610],{"_path":6,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":10,"description":11,"date":12,"category":13,"archives":14,"author":15,"body":19,"_type":4181,"_id":4182,"_source":4183,"_file":4184,"_stem":4185,"_extension":4186,"coverImage":132,"plainText":4187,"authorNames":4188},"\u002Fen\u002Fblogs\u002Fhi3093-dev-board-i2c","blogs",false,"","Sensor Function Adaptation and Debugging for the Hi3093 Development Board (openubmc.cn)","This article describes the common debugging and adaptation methods for adapting I2C sensors based on the .","2025\u002F08\u002F25","case","2025-08",[16],{"name":17,"description":18},"郭馨","openUBMC project team leader at Kunlun Technology (Beijing) Co., Ltd.",{"type":20,"children":21,"toc":4178},"root",[22,30,36,53,59,94,100,114,120,125,134,148,156,176,184,189,197,202,298,304,317,340,2757,2778,2793,2813,2825,4160,4167,4172],{"type":23,"tag":24,"props":25,"children":27},"element","h1",{"id":26},"sensor-function-adaptation-and-debugging-for-the-hi3093-development-board-openubmccn",[28],{"type":29,"value":10},"text",{"type":23,"tag":24,"props":31,"children":33},{"id":32},"introduction",[34],{"type":29,"value":35},"Introduction",{"type":23,"tag":37,"props":38,"children":39},"p",{},[40,42,51],{"type":29,"value":41},"This article describes the common debugging and adaptation methods for adapting I2C sensors based on the ",{"type":23,"tag":43,"props":44,"children":48},"a",{"href":45,"rel":46},"https:\u002F\u002Fwww.myir.cn\u002Fshows\u002F136\u002F71.html",[47],"nofollow",[49],{"type":29,"value":50},"MYC-LHi3093 development board",{"type":29,"value":52},".",{"type":23,"tag":24,"props":54,"children":56},{"id":55},"material-preparation",[57],{"type":29,"value":58},"Material Preparation",{"type":23,"tag":60,"props":61,"children":62},"ul",{},[63,69,74,79,84,89],{"type":23,"tag":64,"props":65,"children":66},"li",{},[67],{"type":29,"value":68},"Hi3093 core board",{"type":23,"tag":64,"props":70,"children":71},{},[72],{"type":29,"value":73},"Power adapter of the core board",{"type":23,"tag":64,"props":75,"children":76},{},[77],{"type":29,"value":78},"Network cable",{"type":23,"tag":64,"props":80,"children":81},{},[82],{"type":29,"value":83},"Type-C USB cable",{"type":23,"tag":64,"props":85,"children":86},{},[87],{"type":29,"value":88},"Jumper wires",{"type":23,"tag":64,"props":90,"children":91},{},[92],{"type":29,"value":93},"Expansion board (with the LM75 sensor)",{"type":23,"tag":24,"props":95,"children":97},{"id":96},"i2c-tool-application",[98],{"type":29,"value":99},"I2C Tool Application",{"type":23,"tag":37,"props":101,"children":102},{},[103,105,112],{"type":29,"value":104},"Currently, openUBMC 2506 version does not support I2C tools to perform i2cdetect and i2ctransfer operations. This article references the post ",{"type":23,"tag":43,"props":106,"children":109},{"href":107,"rel":108},"https:\u002F\u002Fdiscuss.openubmc.cn\u002Ft\u002Ftopic\u002F2031",[47],[110],{"type":29,"value":111},"Self-made I2C Debugging Tool",{"type":29,"value":113}," (i2cdetect and i2ctransfer for openUBMC) and uploads i2cdetect and i2ctransfer to the \u002Fdata directory using SCP.",{"type":23,"tag":24,"props":115,"children":117},{"id":116},"sensor-debugging",[118],{"type":29,"value":119},"Sensor Debugging",{"type":23,"tag":37,"props":121,"children":122},{},[123],{"type":29,"value":124},"According to the hardware schematic diagram of the development board, connect the BMC I2C bus through pin headers on the development board to the external debugging board through jumper wires. The following figure shows the connections of the power supply, GND, SDA, and SCL on I2C9.",{"type":23,"tag":37,"props":126,"children":127},{},[128],{"type":23,"tag":129,"props":130,"children":133},"img",{"alt":131,"src":132},"Hi3093开发板","\u002Fcategory\u002Fblog\u002Fhi3093-dev-board-i2c\u002FHi3093_board-en.png",[],{"type":23,"tag":37,"props":135,"children":136},{},[137,139,146],{"type":29,"value":138},"It is known that I2C9 is mounted with LM75(0x48), LM75(0x4f), and PCA9546(0x70), and PCA9546 channel0 is connected to LM75(0x49). Run the ",{"type":23,"tag":140,"props":141,"children":143},"code",{"className":142},[],[144],{"type":29,"value":145},".\u002Fi2cdetect 9",{"type":29,"value":147}," command in the \u002Fdata directory. It shows that preceding devices have been detected correctly.",{"type":23,"tag":37,"props":149,"children":150},{},[151],{"type":23,"tag":129,"props":152,"children":155},{"alt":153,"src":154},"i2c检测结果","\u002Fcategory\u002Fblog\u002Fhi3093-dev-board-i2c\u002Fi2cdetect9.png",[],{"type":23,"tag":37,"props":157,"children":158},{},[159,161,167,169,174],{"type":29,"value":160},"Run the ",{"type":23,"tag":140,"props":162,"children":164},{"className":163},[],[165],{"type":29,"value":166},".\u002Fi2ctransfer 9",{"type":29,"value":168}," w2@0x70 0x01 command to enable PCA9546 channel0. Then run the ",{"type":23,"tag":140,"props":170,"children":172},{"className":171},[],[173],{"type":29,"value":145},{"type":29,"value":175}," command. LM75(0x49) can be detected now.",{"type":23,"tag":37,"props":177,"children":178},{},[179],{"type":23,"tag":129,"props":180,"children":183},{"alt":181,"src":182},"i2c探测结果","\u002Fcategory\u002Fblog\u002Fhi3093-dev-board-i2c\u002Fpca9546_enable_channel0.png",[],{"type":23,"tag":37,"props":185,"children":186},{},[187],{"type":29,"value":188},"The lower four bits of the PCA9546 control register correspond to four channels. You can use i2ctransfer to enable a specified channel and check whether the I2C device connected to the channel is normal.",{"type":23,"tag":37,"props":190,"children":191},{},[192],{"type":23,"tag":129,"props":193,"children":196},{"alt":194,"src":195},"PCA9546控制寄存器","\u002Fcategory\u002Fblog\u002Fhi3093-dev-board-i2c\u002Fpca9546_control_register.png",[],{"type":23,"tag":37,"props":198,"children":199},{},[200],{"type":29,"value":201},"You can run the following commands to enable the four channels of PCA9546 independently. Writing 0x00 to PCA9546 can disable all channels.",{"type":23,"tag":203,"props":204,"children":205},"table",{},[206,225],{"type":23,"tag":207,"props":208,"children":209},"thead",{},[210],{"type":23,"tag":211,"props":212,"children":213},"tr",{},[214,220],{"type":23,"tag":215,"props":216,"children":217},"th",{},[218],{"type":29,"value":219},"Channel ID",{"type":23,"tag":215,"props":221,"children":222},{},[223],{"type":29,"value":224},"Command",{"type":23,"tag":226,"props":227,"children":228},"tbody",{},[229,247,264,281],{"type":23,"tag":211,"props":230,"children":231},{},[232,238],{"type":23,"tag":233,"props":234,"children":235},"td",{},[236],{"type":29,"value":237},"Channel 0",{"type":23,"tag":233,"props":239,"children":240},{},[241],{"type":23,"tag":140,"props":242,"children":244},{"className":243},[],[245],{"type":29,"value":246},"i2ctransfer \u003Ci2cbus> w1@0x70 0x01",{"type":23,"tag":211,"props":248,"children":249},{},[250,255],{"type":23,"tag":233,"props":251,"children":252},{},[253],{"type":29,"value":254},"Channel 1",{"type":23,"tag":233,"props":256,"children":257},{},[258],{"type":23,"tag":140,"props":259,"children":261},{"className":260},[],[262],{"type":29,"value":263},"i2ctransfer \u003Ci2cbus> w1@0x70 0x02",{"type":23,"tag":211,"props":265,"children":266},{},[267,272],{"type":23,"tag":233,"props":268,"children":269},{},[270],{"type":29,"value":271},"Channel 2",{"type":23,"tag":233,"props":273,"children":274},{},[275],{"type":23,"tag":140,"props":276,"children":278},{"className":277},[],[279],{"type":29,"value":280},"i2ctransfer \u003Ci2cbus> w1@0x70 0x04",{"type":23,"tag":211,"props":282,"children":283},{},[284,289],{"type":23,"tag":233,"props":285,"children":286},{},[287],{"type":29,"value":288},"Channel 3",{"type":23,"tag":233,"props":290,"children":291},{},[292],{"type":23,"tag":140,"props":293,"children":295},{"className":294},[],[296],{"type":29,"value":297},"i2ctransfer \u003Ci2cbus> w1@0x70 0x08",{"type":23,"tag":24,"props":299,"children":301},{"id":300},"sensor-configuration",[302],{"type":29,"value":303},"Sensor Configuration",{"type":23,"tag":37,"props":305,"children":306},{},[307,309,315],{"type":29,"value":308},"The following uses the board name openUBMC as an example. Configure the ",{"type":23,"tag":140,"props":310,"children":312},{"className":311},[],[313],{"type":29,"value":314},"vpd\u002Fvendor\u002FHuawei\u002FServer\u002FKunpeng\u002FopenUBMC\u002Froot.sr",{"type":29,"value":316}," file as follows:",{"type":23,"tag":60,"props":318,"children":319},{},[320,325,330,335],{"type":23,"tag":64,"props":321,"children":322},{},[323],{"type":29,"value":324},"Add I2c_9 to ManagementTopology > Anchor > Buses.",{"type":23,"tag":64,"props":326,"children":327},{},[328],{"type":29,"value":329},"Add the LM75 sensor chip and Connectors configuration under I2c_9. Within the Connector section, configure Connector_DemoCard to indicate that PCA9546 is located in the CSR of the downstream component DemoCard.",{"type":23,"tag":64,"props":331,"children":332},{},[333],{"type":29,"value":334},"Under Objects, configure the LM75 object, Entity, and ThresholdSensor. Since this sensor obtains values through periodic polling, Scanner must also be configured.",{"type":23,"tag":64,"props":336,"children":337},{},[338],{"type":29,"value":339},"Also under Objects, configure Connector_DemoCard. An IdentifyMode value of 2 indicates that the downstream component is not a Tianchi component. Non-Tianchi components utilize three configuration items (Bom, Id, and AuxID) to determine the downstream component CSR name, which is formatted as: Bom_Id_AuxId.csr. In this example, the downstream component CSR name is 14100513_DemoCard_0.sr. The I2c_9 configuration within Buses indicates that the bus connecting to the downstream board is I2C9. Note that Position of any two connectors within the same CSR file cannot be duplicated.",{"type":23,"tag":341,"props":342,"children":346},"pre",{"className":343,"code":344,"language":345,"meta":9,"style":9},"language-json shiki shiki-themes github-light github-dark monokai","{\n    \"ManagementTopology\": {\n        \"Anchor\": {\n            \"Buses\": [\n                \"I2c_1\",\n                \"I2c_2\",\n                \"I2c_3\",\n                \"I2c_4\",\n                \"I2c_5\",\n                \"I2c_6\",\n                \"I2c_7\",\n                \"I2c_8\",\n                \"I2c_9\",\n                \"I2c_11\"\n            ]\n        },\n        \"I2c_9\": {\n            \"Chips\": [\n                \"Lm75_1\",\n                \"Lm75_2\"\n            ],\n            \"Connectors\": [\n                \"Connector_DemoCard\"\n            ]\n       }\n    },\n    \"Objects\": {\n        \"I2c_9\": {\n            \"Id\": 9\n        },\n        \"Lm75_1\": {\n            \"OffsetWidth\": 1,\n            \"AddrWidth\": 1,\n            \"Address\": 144\n        },\n        \"Lm75_2\": {\n            \"OffsetWidth\": 1,\n            \"AddrWidth\": 1,\n            \"Address\": 158\n        },\n        \"Scanner_InletLM75\": {\n            \"Chip\": \"#\u002FLm75_1\",\n            \"Size\": 1,\n            \"Offset\": 0,\n            \"Mask\": 255,\n            \"Period\": 1000\n        },\n        \"Scanner_OutletLM75\": {\n            \"Chip\": \"#\u002FLm75_2\",\n            \"Size\": 1,\n            \"Offset\": 0,\n            \"Mask\": 255,\n            \"Period\": 1000\n        },\n        \"ThresholdSensor_InletTemp\": {\n            \"AssertMask\": 516,\n            \"DeassertMask\": 516,\n            \"ReadingMask\": 4626,\n            \"Linearization\": 0,\n            \"M\": 100,\n            \"RBExp\": 224,\n            \"UpperCritical\": 60,\n            \"LowerCritical\": 5,\n            \"PositiveHysteresis\": 2,\n            \"NegativeHysteresis\": 2,\n            \"OwnerId\": 32,\n            \"OwnerLun\": 0,\n            \"EntityId\": \"\u003C=\u002FEntity_InletTemp.Id\",\n            \"EntityInstance\": \"\u003C=\u002FEntity_InletTemp.Instance\",\n            \"Initialization\": 127,\n            \"Capabilities\": 104,\n            \"SensorType\": 1,\n            \"ReadingType\": 1,\n            \"SensorName\": \"Inlet_Temp\",\n            \"Unit\": 128,\n            \"BaseUnit\": 1,\n            \"ModifierUnit\": 0,\n            \"Analog\": 1,\n            \"MaximumReading\": 127,\n            \"MinimumReading\": 128,\n            \"Reading\": \"\u003C=\u002FScanner_InletLM75.Value\"\n        },\n        \"Entity_InletTemp\": {\n            \"Id\": 99,\n            \"Name\": \"Inlet_Temp\",\n            \"PowerState\": 1,\n            \"Presence\": 1,\n            \"Instance\": 96\n        },\n        \"ThresholdSensor_OutletTemp\": {\n            \"AssertMask\": 29312,\n            \"DeassertMask\": 29312,\n            \"ReadingMask\": 6168,\n            \"Linearization\": 0,\n            \"M\": 100,\n            \"RBExp\": 224,\n            \"UpperCritical\": 65,\n            \"UpperNoncritical\": 50,\n            \"PositiveHysteresis\": 2,\n            \"NegativeHysteresis\": 2,\n            \"OwnerId\": 32,\n            \"OwnerLun\": 0,\n            \"EntityId\": \"\u003C=\u002FEntity_OutletTemp.Id\",\n            \"EntityInstance\": \"\u003C=\u002FEntity_OutletTemp.Instance\",\n            \"Initialization\": 127,\n            \"Capabilities\": 104,\n            \"SensorType\": 1,\n            \"ReadingType\": 1,\n            \"SensorName\": \"Outlet_Temp\",\n            \"Unit\": 128,\n            \"BaseUnit\": 1,\n            \"ModifierUnit\": 0,\n            \"Analog\": 1,\n            \"MaximumReading\": 127,\n            \"MinimumReading\": 128,\n            \"Reading\": \"\u003C=\u002FScanner_OutletLM75.Value\"\n        },\n        \"Entity_OutletTemp\": {\n            \"Id\": 99,\n            \"Name\": \"OutletTemp\",\n            \"PowerState\": 1,\n            \"Presence\": 1,\n            \"Instance\": 97\n        },\n        \"Connector_DemoCard\": {\n            \"Bom\": \"14100513\",\n            \"Slot\": 2,\n            \"Position\": 4,\n            \"Presence\": 1,\n            \"Id\": \"DemoCard\",\n            \"AuxId\": \"0\",\n            \"Buses\": [\n                \"I2c_9\"\n            ],\n            \"SystemId\": 1,\n            \"ManagerId\": \"1\",\n            \"ChassisId\": \"1\",\n            \"IdentifyMode\": 2\n        }\n    }\n}\n","json",[347],{"type":23,"tag":140,"props":348,"children":349},{"__ignoreMap":9},[350,362,377,390,404,419,432,445,458,471,484,497,510,523,532,541,550,563,576,589,598,607,620,629,637,646,655,668,680,700,708,721,743,764,782,790,803,823,843,860,868,881,903,924,946,968,986,994,1007,1028,1048,1068,1088,1104,1112,1125,1147,1168,1190,1211,1233,1255,1277,1299,1321,1342,1364,1385,1407,1429,1451,1473,1494,1515,1537,1559,1580,1601,1622,1643,1664,1682,1690,1703,1724,1745,1766,1787,1805,1813,1826,1847,1867,1888,1908,1928,1948,1969,1991,2011,2031,2051,2071,2092,2113,2133,2153,2173,2193,2214,2234,2254,2274,2294,2314,2334,2351,2359,2372,2392,2413,2433,2453,2470,2478,2491,2513,2534,2556,2576,2597,2619,2631,2640,2648,2669,2691,2712,2730,2739,2748],{"type":23,"tag":351,"props":352,"children":355},"span",{"class":353,"line":354},"line",1,[356],{"type":23,"tag":351,"props":357,"children":359},{"style":358},"--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2",[360],{"type":29,"value":361},"{\n",{"type":23,"tag":351,"props":363,"children":365},{"class":353,"line":364},2,[366,372],{"type":23,"tag":351,"props":367,"children":369},{"style":368},"--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic",[370],{"type":29,"value":371},"    \"ManagementTopology\"",{"type":23,"tag":351,"props":373,"children":374},{"style":358},[375],{"type":29,"value":376},": {\n",{"type":23,"tag":351,"props":378,"children":380},{"class":353,"line":379},3,[381,386],{"type":23,"tag":351,"props":382,"children":383},{"style":368},[384],{"type":29,"value":385},"        \"Anchor\"",{"type":23,"tag":351,"props":387,"children":388},{"style":358},[389],{"type":29,"value":376},{"type":23,"tag":351,"props":391,"children":393},{"class":353,"line":392},4,[394,399],{"type":23,"tag":351,"props":395,"children":396},{"style":368},[397],{"type":29,"value":398},"            \"Buses\"",{"type":23,"tag":351,"props":400,"children":401},{"style":358},[402],{"type":29,"value":403},": [\n",{"type":23,"tag":351,"props":405,"children":407},{"class":353,"line":406},5,[408,414],{"type":23,"tag":351,"props":409,"children":411},{"style":410},"--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2",[412],{"type":29,"value":413},"                \"I2c_1\"",{"type":23,"tag":351,"props":415,"children":416},{"style":358},[417],{"type":29,"value":418},",\n",{"type":23,"tag":351,"props":420,"children":422},{"class":353,"line":421},6,[423,428],{"type":23,"tag":351,"props":424,"children":425},{"style":410},[426],{"type":29,"value":427},"                \"I2c_2\"",{"type":23,"tag":351,"props":429,"children":430},{"style":358},[431],{"type":29,"value":418},{"type":23,"tag":351,"props":433,"children":435},{"class":353,"line":434},7,[436,441],{"type":23,"tag":351,"props":437,"children":438},{"style":410},[439],{"type":29,"value":440},"                \"I2c_3\"",{"type":23,"tag":351,"props":442,"children":443},{"style":358},[444],{"type":29,"value":418},{"type":23,"tag":351,"props":446,"children":448},{"class":353,"line":447},8,[449,454],{"type":23,"tag":351,"props":450,"children":451},{"style":410},[452],{"type":29,"value":453},"                \"I2c_4\"",{"type":23,"tag":351,"props":455,"children":456},{"style":358},[457],{"type":29,"value":418},{"type":23,"tag":351,"props":459,"children":461},{"class":353,"line":460},9,[462,467],{"type":23,"tag":351,"props":463,"children":464},{"style":410},[465],{"type":29,"value":466},"                \"I2c_5\"",{"type":23,"tag":351,"props":468,"children":469},{"style":358},[470],{"type":29,"value":418},{"type":23,"tag":351,"props":472,"children":474},{"class":353,"line":473},10,[475,480],{"type":23,"tag":351,"props":476,"children":477},{"style":410},[478],{"type":29,"value":479},"                \"I2c_6\"",{"type":23,"tag":351,"props":481,"children":482},{"style":358},[483],{"type":29,"value":418},{"type":23,"tag":351,"props":485,"children":487},{"class":353,"line":486},11,[488,493],{"type":23,"tag":351,"props":489,"children":490},{"style":410},[491],{"type":29,"value":492},"                \"I2c_7\"",{"type":23,"tag":351,"props":494,"children":495},{"style":358},[496],{"type":29,"value":418},{"type":23,"tag":351,"props":498,"children":500},{"class":353,"line":499},12,[501,506],{"type":23,"tag":351,"props":502,"children":503},{"style":410},[504],{"type":29,"value":505},"                \"I2c_8\"",{"type":23,"tag":351,"props":507,"children":508},{"style":358},[509],{"type":29,"value":418},{"type":23,"tag":351,"props":511,"children":513},{"class":353,"line":512},13,[514,519],{"type":23,"tag":351,"props":515,"children":516},{"style":410},[517],{"type":29,"value":518},"                \"I2c_9\"",{"type":23,"tag":351,"props":520,"children":521},{"style":358},[522],{"type":29,"value":418},{"type":23,"tag":351,"props":524,"children":526},{"class":353,"line":525},14,[527],{"type":23,"tag":351,"props":528,"children":529},{"style":410},[530],{"type":29,"value":531},"                \"I2c_11\"\n",{"type":23,"tag":351,"props":533,"children":535},{"class":353,"line":534},15,[536],{"type":23,"tag":351,"props":537,"children":538},{"style":358},[539],{"type":29,"value":540},"            ]\n",{"type":23,"tag":351,"props":542,"children":544},{"class":353,"line":543},16,[545],{"type":23,"tag":351,"props":546,"children":547},{"style":358},[548],{"type":29,"value":549},"        },\n",{"type":23,"tag":351,"props":551,"children":553},{"class":353,"line":552},17,[554,559],{"type":23,"tag":351,"props":555,"children":556},{"style":368},[557],{"type":29,"value":558},"        \"I2c_9\"",{"type":23,"tag":351,"props":560,"children":561},{"style":358},[562],{"type":29,"value":376},{"type":23,"tag":351,"props":564,"children":566},{"class":353,"line":565},18,[567,572],{"type":23,"tag":351,"props":568,"children":569},{"style":368},[570],{"type":29,"value":571},"            \"Chips\"",{"type":23,"tag":351,"props":573,"children":574},{"style":358},[575],{"type":29,"value":403},{"type":23,"tag":351,"props":577,"children":579},{"class":353,"line":578},19,[580,585],{"type":23,"tag":351,"props":581,"children":582},{"style":410},[583],{"type":29,"value":584},"                \"Lm75_1\"",{"type":23,"tag":351,"props":586,"children":587},{"style":358},[588],{"type":29,"value":418},{"type":23,"tag":351,"props":590,"children":592},{"class":353,"line":591},20,[593],{"type":23,"tag":351,"props":594,"children":595},{"style":410},[596],{"type":29,"value":597},"                \"Lm75_2\"\n",{"type":23,"tag":351,"props":599,"children":601},{"class":353,"line":600},21,[602],{"type":23,"tag":351,"props":603,"children":604},{"style":358},[605],{"type":29,"value":606},"            ],\n",{"type":23,"tag":351,"props":608,"children":610},{"class":353,"line":609},22,[611,616],{"type":23,"tag":351,"props":612,"children":613},{"style":368},[614],{"type":29,"value":615},"            \"Connectors\"",{"type":23,"tag":351,"props":617,"children":618},{"style":358},[619],{"type":29,"value":403},{"type":23,"tag":351,"props":621,"children":623},{"class":353,"line":622},23,[624],{"type":23,"tag":351,"props":625,"children":626},{"style":410},[627],{"type":29,"value":628},"                \"Connector_DemoCard\"\n",{"type":23,"tag":351,"props":630,"children":632},{"class":353,"line":631},24,[633],{"type":23,"tag":351,"props":634,"children":635},{"style":358},[636],{"type":29,"value":540},{"type":23,"tag":351,"props":638,"children":640},{"class":353,"line":639},25,[641],{"type":23,"tag":351,"props":642,"children":643},{"style":358},[644],{"type":29,"value":645},"       }\n",{"type":23,"tag":351,"props":647,"children":649},{"class":353,"line":648},26,[650],{"type":23,"tag":351,"props":651,"children":652},{"style":358},[653],{"type":29,"value":654},"    },\n",{"type":23,"tag":351,"props":656,"children":658},{"class":353,"line":657},27,[659,664],{"type":23,"tag":351,"props":660,"children":661},{"style":368},[662],{"type":29,"value":663},"    \"Objects\"",{"type":23,"tag":351,"props":665,"children":666},{"style":358},[667],{"type":29,"value":376},{"type":23,"tag":351,"props":669,"children":671},{"class":353,"line":670},28,[672,676],{"type":23,"tag":351,"props":673,"children":674},{"style":368},[675],{"type":29,"value":558},{"type":23,"tag":351,"props":677,"children":678},{"style":358},[679],{"type":29,"value":376},{"type":23,"tag":351,"props":681,"children":683},{"class":353,"line":682},29,[684,689,694],{"type":23,"tag":351,"props":685,"children":686},{"style":368},[687],{"type":29,"value":688},"            \"Id\"",{"type":23,"tag":351,"props":690,"children":691},{"style":358},[692],{"type":29,"value":693},": ",{"type":23,"tag":351,"props":695,"children":697},{"style":696},"--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF",[698],{"type":29,"value":699},"9\n",{"type":23,"tag":351,"props":701,"children":703},{"class":353,"line":702},30,[704],{"type":23,"tag":351,"props":705,"children":706},{"style":358},[707],{"type":29,"value":549},{"type":23,"tag":351,"props":709,"children":711},{"class":353,"line":710},31,[712,717],{"type":23,"tag":351,"props":713,"children":714},{"style":368},[715],{"type":29,"value":716},"        \"Lm75_1\"",{"type":23,"tag":351,"props":718,"children":719},{"style":358},[720],{"type":29,"value":376},{"type":23,"tag":351,"props":722,"children":724},{"class":353,"line":723},32,[725,730,734,739],{"type":23,"tag":351,"props":726,"children":727},{"style":368},[728],{"type":29,"value":729},"            \"OffsetWidth\"",{"type":23,"tag":351,"props":731,"children":732},{"style":358},[733],{"type":29,"value":693},{"type":23,"tag":351,"props":735,"children":736},{"style":696},[737],{"type":29,"value":738},"1",{"type":23,"tag":351,"props":740,"children":741},{"style":358},[742],{"type":29,"value":418},{"type":23,"tag":351,"props":744,"children":746},{"class":353,"line":745},33,[747,752,756,760],{"type":23,"tag":351,"props":748,"children":749},{"style":368},[750],{"type":29,"value":751},"            \"AddrWidth\"",{"type":23,"tag":351,"props":753,"children":754},{"style":358},[755],{"type":29,"value":693},{"type":23,"tag":351,"props":757,"children":758},{"style":696},[759],{"type":29,"value":738},{"type":23,"tag":351,"props":761,"children":762},{"style":358},[763],{"type":29,"value":418},{"type":23,"tag":351,"props":765,"children":767},{"class":353,"line":766},34,[768,773,777],{"type":23,"tag":351,"props":769,"children":770},{"style":368},[771],{"type":29,"value":772},"            \"Address\"",{"type":23,"tag":351,"props":774,"children":775},{"style":358},[776],{"type":29,"value":693},{"type":23,"tag":351,"props":778,"children":779},{"style":696},[780],{"type":29,"value":781},"144\n",{"type":23,"tag":351,"props":783,"children":785},{"class":353,"line":784},35,[786],{"type":23,"tag":351,"props":787,"children":788},{"style":358},[789],{"type":29,"value":549},{"type":23,"tag":351,"props":791,"children":793},{"class":353,"line":792},36,[794,799],{"type":23,"tag":351,"props":795,"children":796},{"style":368},[797],{"type":29,"value":798},"        \"Lm75_2\"",{"type":23,"tag":351,"props":800,"children":801},{"style":358},[802],{"type":29,"value":376},{"type":23,"tag":351,"props":804,"children":806},{"class":353,"line":805},37,[807,811,815,819],{"type":23,"tag":351,"props":808,"children":809},{"style":368},[810],{"type":29,"value":729},{"type":23,"tag":351,"props":812,"children":813},{"style":358},[814],{"type":29,"value":693},{"type":23,"tag":351,"props":816,"children":817},{"style":696},[818],{"type":29,"value":738},{"type":23,"tag":351,"props":820,"children":821},{"style":358},[822],{"type":29,"value":418},{"type":23,"tag":351,"props":824,"children":826},{"class":353,"line":825},38,[827,831,835,839],{"type":23,"tag":351,"props":828,"children":829},{"style":368},[830],{"type":29,"value":751},{"type":23,"tag":351,"props":832,"children":833},{"style":358},[834],{"type":29,"value":693},{"type":23,"tag":351,"props":836,"children":837},{"style":696},[838],{"type":29,"value":738},{"type":23,"tag":351,"props":840,"children":841},{"style":358},[842],{"type":29,"value":418},{"type":23,"tag":351,"props":844,"children":846},{"class":353,"line":845},39,[847,851,855],{"type":23,"tag":351,"props":848,"children":849},{"style":368},[850],{"type":29,"value":772},{"type":23,"tag":351,"props":852,"children":853},{"style":358},[854],{"type":29,"value":693},{"type":23,"tag":351,"props":856,"children":857},{"style":696},[858],{"type":29,"value":859},"158\n",{"type":23,"tag":351,"props":861,"children":863},{"class":353,"line":862},40,[864],{"type":23,"tag":351,"props":865,"children":866},{"style":358},[867],{"type":29,"value":549},{"type":23,"tag":351,"props":869,"children":871},{"class":353,"line":870},41,[872,877],{"type":23,"tag":351,"props":873,"children":874},{"style":368},[875],{"type":29,"value":876},"        \"Scanner_InletLM75\"",{"type":23,"tag":351,"props":878,"children":879},{"style":358},[880],{"type":29,"value":376},{"type":23,"tag":351,"props":882,"children":884},{"class":353,"line":883},42,[885,890,894,899],{"type":23,"tag":351,"props":886,"children":887},{"style":368},[888],{"type":29,"value":889},"            \"Chip\"",{"type":23,"tag":351,"props":891,"children":892},{"style":358},[893],{"type":29,"value":693},{"type":23,"tag":351,"props":895,"children":896},{"style":410},[897],{"type":29,"value":898},"\"#\u002FLm75_1\"",{"type":23,"tag":351,"props":900,"children":901},{"style":358},[902],{"type":29,"value":418},{"type":23,"tag":351,"props":904,"children":906},{"class":353,"line":905},43,[907,912,916,920],{"type":23,"tag":351,"props":908,"children":909},{"style":368},[910],{"type":29,"value":911},"            \"Size\"",{"type":23,"tag":351,"props":913,"children":914},{"style":358},[915],{"type":29,"value":693},{"type":23,"tag":351,"props":917,"children":918},{"style":696},[919],{"type":29,"value":738},{"type":23,"tag":351,"props":921,"children":922},{"style":358},[923],{"type":29,"value":418},{"type":23,"tag":351,"props":925,"children":927},{"class":353,"line":926},44,[928,933,937,942],{"type":23,"tag":351,"props":929,"children":930},{"style":368},[931],{"type":29,"value":932},"            \"Offset\"",{"type":23,"tag":351,"props":934,"children":935},{"style":358},[936],{"type":29,"value":693},{"type":23,"tag":351,"props":938,"children":939},{"style":696},[940],{"type":29,"value":941},"0",{"type":23,"tag":351,"props":943,"children":944},{"style":358},[945],{"type":29,"value":418},{"type":23,"tag":351,"props":947,"children":949},{"class":353,"line":948},45,[950,955,959,964],{"type":23,"tag":351,"props":951,"children":952},{"style":368},[953],{"type":29,"value":954},"            \"Mask\"",{"type":23,"tag":351,"props":956,"children":957},{"style":358},[958],{"type":29,"value":693},{"type":23,"tag":351,"props":960,"children":961},{"style":696},[962],{"type":29,"value":963},"255",{"type":23,"tag":351,"props":965,"children":966},{"style":358},[967],{"type":29,"value":418},{"type":23,"tag":351,"props":969,"children":971},{"class":353,"line":970},46,[972,977,981],{"type":23,"tag":351,"props":973,"children":974},{"style":368},[975],{"type":29,"value":976},"            \"Period\"",{"type":23,"tag":351,"props":978,"children":979},{"style":358},[980],{"type":29,"value":693},{"type":23,"tag":351,"props":982,"children":983},{"style":696},[984],{"type":29,"value":985},"1000\n",{"type":23,"tag":351,"props":987,"children":989},{"class":353,"line":988},47,[990],{"type":23,"tag":351,"props":991,"children":992},{"style":358},[993],{"type":29,"value":549},{"type":23,"tag":351,"props":995,"children":997},{"class":353,"line":996},48,[998,1003],{"type":23,"tag":351,"props":999,"children":1000},{"style":368},[1001],{"type":29,"value":1002},"        \"Scanner_OutletLM75\"",{"type":23,"tag":351,"props":1004,"children":1005},{"style":358},[1006],{"type":29,"value":376},{"type":23,"tag":351,"props":1008,"children":1010},{"class":353,"line":1009},49,[1011,1015,1019,1024],{"type":23,"tag":351,"props":1012,"children":1013},{"style":368},[1014],{"type":29,"value":889},{"type":23,"tag":351,"props":1016,"children":1017},{"style":358},[1018],{"type":29,"value":693},{"type":23,"tag":351,"props":1020,"children":1021},{"style":410},[1022],{"type":29,"value":1023},"\"#\u002FLm75_2\"",{"type":23,"tag":351,"props":1025,"children":1026},{"style":358},[1027],{"type":29,"value":418},{"type":23,"tag":351,"props":1029,"children":1031},{"class":353,"line":1030},50,[1032,1036,1040,1044],{"type":23,"tag":351,"props":1033,"children":1034},{"style":368},[1035],{"type":29,"value":911},{"type":23,"tag":351,"props":1037,"children":1038},{"style":358},[1039],{"type":29,"value":693},{"type":23,"tag":351,"props":1041,"children":1042},{"style":696},[1043],{"type":29,"value":738},{"type":23,"tag":351,"props":1045,"children":1046},{"style":358},[1047],{"type":29,"value":418},{"type":23,"tag":351,"props":1049,"children":1051},{"class":353,"line":1050},51,[1052,1056,1060,1064],{"type":23,"tag":351,"props":1053,"children":1054},{"style":368},[1055],{"type":29,"value":932},{"type":23,"tag":351,"props":1057,"children":1058},{"style":358},[1059],{"type":29,"value":693},{"type":23,"tag":351,"props":1061,"children":1062},{"style":696},[1063],{"type":29,"value":941},{"type":23,"tag":351,"props":1065,"children":1066},{"style":358},[1067],{"type":29,"value":418},{"type":23,"tag":351,"props":1069,"children":1071},{"class":353,"line":1070},52,[1072,1076,1080,1084],{"type":23,"tag":351,"props":1073,"children":1074},{"style":368},[1075],{"type":29,"value":954},{"type":23,"tag":351,"props":1077,"children":1078},{"style":358},[1079],{"type":29,"value":693},{"type":23,"tag":351,"props":1081,"children":1082},{"style":696},[1083],{"type":29,"value":963},{"type":23,"tag":351,"props":1085,"children":1086},{"style":358},[1087],{"type":29,"value":418},{"type":23,"tag":351,"props":1089,"children":1091},{"class":353,"line":1090},53,[1092,1096,1100],{"type":23,"tag":351,"props":1093,"children":1094},{"style":368},[1095],{"type":29,"value":976},{"type":23,"tag":351,"props":1097,"children":1098},{"style":358},[1099],{"type":29,"value":693},{"type":23,"tag":351,"props":1101,"children":1102},{"style":696},[1103],{"type":29,"value":985},{"type":23,"tag":351,"props":1105,"children":1107},{"class":353,"line":1106},54,[1108],{"type":23,"tag":351,"props":1109,"children":1110},{"style":358},[1111],{"type":29,"value":549},{"type":23,"tag":351,"props":1113,"children":1115},{"class":353,"line":1114},55,[1116,1121],{"type":23,"tag":351,"props":1117,"children":1118},{"style":368},[1119],{"type":29,"value":1120},"        \"ThresholdSensor_InletTemp\"",{"type":23,"tag":351,"props":1122,"children":1123},{"style":358},[1124],{"type":29,"value":376},{"type":23,"tag":351,"props":1126,"children":1128},{"class":353,"line":1127},56,[1129,1134,1138,1143],{"type":23,"tag":351,"props":1130,"children":1131},{"style":368},[1132],{"type":29,"value":1133},"            \"AssertMask\"",{"type":23,"tag":351,"props":1135,"children":1136},{"style":358},[1137],{"type":29,"value":693},{"type":23,"tag":351,"props":1139,"children":1140},{"style":696},[1141],{"type":29,"value":1142},"516",{"type":23,"tag":351,"props":1144,"children":1145},{"style":358},[1146],{"type":29,"value":418},{"type":23,"tag":351,"props":1148,"children":1150},{"class":353,"line":1149},57,[1151,1156,1160,1164],{"type":23,"tag":351,"props":1152,"children":1153},{"style":368},[1154],{"type":29,"value":1155},"            \"DeassertMask\"",{"type":23,"tag":351,"props":1157,"children":1158},{"style":358},[1159],{"type":29,"value":693},{"type":23,"tag":351,"props":1161,"children":1162},{"style":696},[1163],{"type":29,"value":1142},{"type":23,"tag":351,"props":1165,"children":1166},{"style":358},[1167],{"type":29,"value":418},{"type":23,"tag":351,"props":1169,"children":1171},{"class":353,"line":1170},58,[1172,1177,1181,1186],{"type":23,"tag":351,"props":1173,"children":1174},{"style":368},[1175],{"type":29,"value":1176},"            \"ReadingMask\"",{"type":23,"tag":351,"props":1178,"children":1179},{"style":358},[1180],{"type":29,"value":693},{"type":23,"tag":351,"props":1182,"children":1183},{"style":696},[1184],{"type":29,"value":1185},"4626",{"type":23,"tag":351,"props":1187,"children":1188},{"style":358},[1189],{"type":29,"value":418},{"type":23,"tag":351,"props":1191,"children":1193},{"class":353,"line":1192},59,[1194,1199,1203,1207],{"type":23,"tag":351,"props":1195,"children":1196},{"style":368},[1197],{"type":29,"value":1198},"            \"Linearization\"",{"type":23,"tag":351,"props":1200,"children":1201},{"style":358},[1202],{"type":29,"value":693},{"type":23,"tag":351,"props":1204,"children":1205},{"style":696},[1206],{"type":29,"value":941},{"type":23,"tag":351,"props":1208,"children":1209},{"style":358},[1210],{"type":29,"value":418},{"type":23,"tag":351,"props":1212,"children":1214},{"class":353,"line":1213},60,[1215,1220,1224,1229],{"type":23,"tag":351,"props":1216,"children":1217},{"style":368},[1218],{"type":29,"value":1219},"            \"M\"",{"type":23,"tag":351,"props":1221,"children":1222},{"style":358},[1223],{"type":29,"value":693},{"type":23,"tag":351,"props":1225,"children":1226},{"style":696},[1227],{"type":29,"value":1228},"100",{"type":23,"tag":351,"props":1230,"children":1231},{"style":358},[1232],{"type":29,"value":418},{"type":23,"tag":351,"props":1234,"children":1236},{"class":353,"line":1235},61,[1237,1242,1246,1251],{"type":23,"tag":351,"props":1238,"children":1239},{"style":368},[1240],{"type":29,"value":1241},"            \"RBExp\"",{"type":23,"tag":351,"props":1243,"children":1244},{"style":358},[1245],{"type":29,"value":693},{"type":23,"tag":351,"props":1247,"children":1248},{"style":696},[1249],{"type":29,"value":1250},"224",{"type":23,"tag":351,"props":1252,"children":1253},{"style":358},[1254],{"type":29,"value":418},{"type":23,"tag":351,"props":1256,"children":1258},{"class":353,"line":1257},62,[1259,1264,1268,1273],{"type":23,"tag":351,"props":1260,"children":1261},{"style":368},[1262],{"type":29,"value":1263},"            \"UpperCritical\"",{"type":23,"tag":351,"props":1265,"children":1266},{"style":358},[1267],{"type":29,"value":693},{"type":23,"tag":351,"props":1269,"children":1270},{"style":696},[1271],{"type":29,"value":1272},"60",{"type":23,"tag":351,"props":1274,"children":1275},{"style":358},[1276],{"type":29,"value":418},{"type":23,"tag":351,"props":1278,"children":1280},{"class":353,"line":1279},63,[1281,1286,1290,1295],{"type":23,"tag":351,"props":1282,"children":1283},{"style":368},[1284],{"type":29,"value":1285},"            \"LowerCritical\"",{"type":23,"tag":351,"props":1287,"children":1288},{"style":358},[1289],{"type":29,"value":693},{"type":23,"tag":351,"props":1291,"children":1292},{"style":696},[1293],{"type":29,"value":1294},"5",{"type":23,"tag":351,"props":1296,"children":1297},{"style":358},[1298],{"type":29,"value":418},{"type":23,"tag":351,"props":1300,"children":1302},{"class":353,"line":1301},64,[1303,1308,1312,1317],{"type":23,"tag":351,"props":1304,"children":1305},{"style":368},[1306],{"type":29,"value":1307},"            \"PositiveHysteresis\"",{"type":23,"tag":351,"props":1309,"children":1310},{"style":358},[1311],{"type":29,"value":693},{"type":23,"tag":351,"props":1313,"children":1314},{"style":696},[1315],{"type":29,"value":1316},"2",{"type":23,"tag":351,"props":1318,"children":1319},{"style":358},[1320],{"type":29,"value":418},{"type":23,"tag":351,"props":1322,"children":1324},{"class":353,"line":1323},65,[1325,1330,1334,1338],{"type":23,"tag":351,"props":1326,"children":1327},{"style":368},[1328],{"type":29,"value":1329},"            \"NegativeHysteresis\"",{"type":23,"tag":351,"props":1331,"children":1332},{"style":358},[1333],{"type":29,"value":693},{"type":23,"tag":351,"props":1335,"children":1336},{"style":696},[1337],{"type":29,"value":1316},{"type":23,"tag":351,"props":1339,"children":1340},{"style":358},[1341],{"type":29,"value":418},{"type":23,"tag":351,"props":1343,"children":1345},{"class":353,"line":1344},66,[1346,1351,1355,1360],{"type":23,"tag":351,"props":1347,"children":1348},{"style":368},[1349],{"type":29,"value":1350},"            \"OwnerId\"",{"type":23,"tag":351,"props":1352,"children":1353},{"style":358},[1354],{"type":29,"value":693},{"type":23,"tag":351,"props":1356,"children":1357},{"style":696},[1358],{"type":29,"value":1359},"32",{"type":23,"tag":351,"props":1361,"children":1362},{"style":358},[1363],{"type":29,"value":418},{"type":23,"tag":351,"props":1365,"children":1367},{"class":353,"line":1366},67,[1368,1373,1377,1381],{"type":23,"tag":351,"props":1369,"children":1370},{"style":368},[1371],{"type":29,"value":1372},"            \"OwnerLun\"",{"type":23,"tag":351,"props":1374,"children":1375},{"style":358},[1376],{"type":29,"value":693},{"type":23,"tag":351,"props":1378,"children":1379},{"style":696},[1380],{"type":29,"value":941},{"type":23,"tag":351,"props":1382,"children":1383},{"style":358},[1384],{"type":29,"value":418},{"type":23,"tag":351,"props":1386,"children":1388},{"class":353,"line":1387},68,[1389,1394,1398,1403],{"type":23,"tag":351,"props":1390,"children":1391},{"style":368},[1392],{"type":29,"value":1393},"            \"EntityId\"",{"type":23,"tag":351,"props":1395,"children":1396},{"style":358},[1397],{"type":29,"value":693},{"type":23,"tag":351,"props":1399,"children":1400},{"style":410},[1401],{"type":29,"value":1402},"\"\u003C=\u002FEntity_InletTemp.Id\"",{"type":23,"tag":351,"props":1404,"children":1405},{"style":358},[1406],{"type":29,"value":418},{"type":23,"tag":351,"props":1408,"children":1410},{"class":353,"line":1409},69,[1411,1416,1420,1425],{"type":23,"tag":351,"props":1412,"children":1413},{"style":368},[1414],{"type":29,"value":1415},"            \"EntityInstance\"",{"type":23,"tag":351,"props":1417,"children":1418},{"style":358},[1419],{"type":29,"value":693},{"type":23,"tag":351,"props":1421,"children":1422},{"style":410},[1423],{"type":29,"value":1424},"\"\u003C=\u002FEntity_InletTemp.Instance\"",{"type":23,"tag":351,"props":1426,"children":1427},{"style":358},[1428],{"type":29,"value":418},{"type":23,"tag":351,"props":1430,"children":1432},{"class":353,"line":1431},70,[1433,1438,1442,1447],{"type":23,"tag":351,"props":1434,"children":1435},{"style":368},[1436],{"type":29,"value":1437},"            \"Initialization\"",{"type":23,"tag":351,"props":1439,"children":1440},{"style":358},[1441],{"type":29,"value":693},{"type":23,"tag":351,"props":1443,"children":1444},{"style":696},[1445],{"type":29,"value":1446},"127",{"type":23,"tag":351,"props":1448,"children":1449},{"style":358},[1450],{"type":29,"value":418},{"type":23,"tag":351,"props":1452,"children":1454},{"class":353,"line":1453},71,[1455,1460,1464,1469],{"type":23,"tag":351,"props":1456,"children":1457},{"style":368},[1458],{"type":29,"value":1459},"            \"Capabilities\"",{"type":23,"tag":351,"props":1461,"children":1462},{"style":358},[1463],{"type":29,"value":693},{"type":23,"tag":351,"props":1465,"children":1466},{"style":696},[1467],{"type":29,"value":1468},"104",{"type":23,"tag":351,"props":1470,"children":1471},{"style":358},[1472],{"type":29,"value":418},{"type":23,"tag":351,"props":1474,"children":1476},{"class":353,"line":1475},72,[1477,1482,1486,1490],{"type":23,"tag":351,"props":1478,"children":1479},{"style":368},[1480],{"type":29,"value":1481},"            \"SensorType\"",{"type":23,"tag":351,"props":1483,"children":1484},{"style":358},[1485],{"type":29,"value":693},{"type":23,"tag":351,"props":1487,"children":1488},{"style":696},[1489],{"type":29,"value":738},{"type":23,"tag":351,"props":1491,"children":1492},{"style":358},[1493],{"type":29,"value":418},{"type":23,"tag":351,"props":1495,"children":1497},{"class":353,"line":1496},73,[1498,1503,1507,1511],{"type":23,"tag":351,"props":1499,"children":1500},{"style":368},[1501],{"type":29,"value":1502},"            \"ReadingType\"",{"type":23,"tag":351,"props":1504,"children":1505},{"style":358},[1506],{"type":29,"value":693},{"type":23,"tag":351,"props":1508,"children":1509},{"style":696},[1510],{"type":29,"value":738},{"type":23,"tag":351,"props":1512,"children":1513},{"style":358},[1514],{"type":29,"value":418},{"type":23,"tag":351,"props":1516,"children":1518},{"class":353,"line":1517},74,[1519,1524,1528,1533],{"type":23,"tag":351,"props":1520,"children":1521},{"style":368},[1522],{"type":29,"value":1523},"            \"SensorName\"",{"type":23,"tag":351,"props":1525,"children":1526},{"style":358},[1527],{"type":29,"value":693},{"type":23,"tag":351,"props":1529,"children":1530},{"style":410},[1531],{"type":29,"value":1532},"\"Inlet_Temp\"",{"type":23,"tag":351,"props":1534,"children":1535},{"style":358},[1536],{"type":29,"value":418},{"type":23,"tag":351,"props":1538,"children":1540},{"class":353,"line":1539},75,[1541,1546,1550,1555],{"type":23,"tag":351,"props":1542,"children":1543},{"style":368},[1544],{"type":29,"value":1545},"            \"Unit\"",{"type":23,"tag":351,"props":1547,"children":1548},{"style":358},[1549],{"type":29,"value":693},{"type":23,"tag":351,"props":1551,"children":1552},{"style":696},[1553],{"type":29,"value":1554},"128",{"type":23,"tag":351,"props":1556,"children":1557},{"style":358},[1558],{"type":29,"value":418},{"type":23,"tag":351,"props":1560,"children":1562},{"class":353,"line":1561},76,[1563,1568,1572,1576],{"type":23,"tag":351,"props":1564,"children":1565},{"style":368},[1566],{"type":29,"value":1567},"            \"BaseUnit\"",{"type":23,"tag":351,"props":1569,"children":1570},{"style":358},[1571],{"type":29,"value":693},{"type":23,"tag":351,"props":1573,"children":1574},{"style":696},[1575],{"type":29,"value":738},{"type":23,"tag":351,"props":1577,"children":1578},{"style":358},[1579],{"type":29,"value":418},{"type":23,"tag":351,"props":1581,"children":1583},{"class":353,"line":1582},77,[1584,1589,1593,1597],{"type":23,"tag":351,"props":1585,"children":1586},{"style":368},[1587],{"type":29,"value":1588},"            \"ModifierUnit\"",{"type":23,"tag":351,"props":1590,"children":1591},{"style":358},[1592],{"type":29,"value":693},{"type":23,"tag":351,"props":1594,"children":1595},{"style":696},[1596],{"type":29,"value":941},{"type":23,"tag":351,"props":1598,"children":1599},{"style":358},[1600],{"type":29,"value":418},{"type":23,"tag":351,"props":1602,"children":1604},{"class":353,"line":1603},78,[1605,1610,1614,1618],{"type":23,"tag":351,"props":1606,"children":1607},{"style":368},[1608],{"type":29,"value":1609},"            \"Analog\"",{"type":23,"tag":351,"props":1611,"children":1612},{"style":358},[1613],{"type":29,"value":693},{"type":23,"tag":351,"props":1615,"children":1616},{"style":696},[1617],{"type":29,"value":738},{"type":23,"tag":351,"props":1619,"children":1620},{"style":358},[1621],{"type":29,"value":418},{"type":23,"tag":351,"props":1623,"children":1625},{"class":353,"line":1624},79,[1626,1631,1635,1639],{"type":23,"tag":351,"props":1627,"children":1628},{"style":368},[1629],{"type":29,"value":1630},"            \"MaximumReading\"",{"type":23,"tag":351,"props":1632,"children":1633},{"style":358},[1634],{"type":29,"value":693},{"type":23,"tag":351,"props":1636,"children":1637},{"style":696},[1638],{"type":29,"value":1446},{"type":23,"tag":351,"props":1640,"children":1641},{"style":358},[1642],{"type":29,"value":418},{"type":23,"tag":351,"props":1644,"children":1646},{"class":353,"line":1645},80,[1647,1652,1656,1660],{"type":23,"tag":351,"props":1648,"children":1649},{"style":368},[1650],{"type":29,"value":1651},"            \"MinimumReading\"",{"type":23,"tag":351,"props":1653,"children":1654},{"style":358},[1655],{"type":29,"value":693},{"type":23,"tag":351,"props":1657,"children":1658},{"style":696},[1659],{"type":29,"value":1554},{"type":23,"tag":351,"props":1661,"children":1662},{"style":358},[1663],{"type":29,"value":418},{"type":23,"tag":351,"props":1665,"children":1667},{"class":353,"line":1666},81,[1668,1673,1677],{"type":23,"tag":351,"props":1669,"children":1670},{"style":368},[1671],{"type":29,"value":1672},"            \"Reading\"",{"type":23,"tag":351,"props":1674,"children":1675},{"style":358},[1676],{"type":29,"value":693},{"type":23,"tag":351,"props":1678,"children":1679},{"style":410},[1680],{"type":29,"value":1681},"\"\u003C=\u002FScanner_InletLM75.Value\"\n",{"type":23,"tag":351,"props":1683,"children":1685},{"class":353,"line":1684},82,[1686],{"type":23,"tag":351,"props":1687,"children":1688},{"style":358},[1689],{"type":29,"value":549},{"type":23,"tag":351,"props":1691,"children":1693},{"class":353,"line":1692},83,[1694,1699],{"type":23,"tag":351,"props":1695,"children":1696},{"style":368},[1697],{"type":29,"value":1698},"        \"Entity_InletTemp\"",{"type":23,"tag":351,"props":1700,"children":1701},{"style":358},[1702],{"type":29,"value":376},{"type":23,"tag":351,"props":1704,"children":1706},{"class":353,"line":1705},84,[1707,1711,1715,1720],{"type":23,"tag":351,"props":1708,"children":1709},{"style":368},[1710],{"type":29,"value":688},{"type":23,"tag":351,"props":1712,"children":1713},{"style":358},[1714],{"type":29,"value":693},{"type":23,"tag":351,"props":1716,"children":1717},{"style":696},[1718],{"type":29,"value":1719},"99",{"type":23,"tag":351,"props":1721,"children":1722},{"style":358},[1723],{"type":29,"value":418},{"type":23,"tag":351,"props":1725,"children":1727},{"class":353,"line":1726},85,[1728,1733,1737,1741],{"type":23,"tag":351,"props":1729,"children":1730},{"style":368},[1731],{"type":29,"value":1732},"            \"Name\"",{"type":23,"tag":351,"props":1734,"children":1735},{"style":358},[1736],{"type":29,"value":693},{"type":23,"tag":351,"props":1738,"children":1739},{"style":410},[1740],{"type":29,"value":1532},{"type":23,"tag":351,"props":1742,"children":1743},{"style":358},[1744],{"type":29,"value":418},{"type":23,"tag":351,"props":1746,"children":1748},{"class":353,"line":1747},86,[1749,1754,1758,1762],{"type":23,"tag":351,"props":1750,"children":1751},{"style":368},[1752],{"type":29,"value":1753},"            \"PowerState\"",{"type":23,"tag":351,"props":1755,"children":1756},{"style":358},[1757],{"type":29,"value":693},{"type":23,"tag":351,"props":1759,"children":1760},{"style":696},[1761],{"type":29,"value":738},{"type":23,"tag":351,"props":1763,"children":1764},{"style":358},[1765],{"type":29,"value":418},{"type":23,"tag":351,"props":1767,"children":1769},{"class":353,"line":1768},87,[1770,1775,1779,1783],{"type":23,"tag":351,"props":1771,"children":1772},{"style":368},[1773],{"type":29,"value":1774},"            \"Presence\"",{"type":23,"tag":351,"props":1776,"children":1777},{"style":358},[1778],{"type":29,"value":693},{"type":23,"tag":351,"props":1780,"children":1781},{"style":696},[1782],{"type":29,"value":738},{"type":23,"tag":351,"props":1784,"children":1785},{"style":358},[1786],{"type":29,"value":418},{"type":23,"tag":351,"props":1788,"children":1790},{"class":353,"line":1789},88,[1791,1796,1800],{"type":23,"tag":351,"props":1792,"children":1793},{"style":368},[1794],{"type":29,"value":1795},"            \"Instance\"",{"type":23,"tag":351,"props":1797,"children":1798},{"style":358},[1799],{"type":29,"value":693},{"type":23,"tag":351,"props":1801,"children":1802},{"style":696},[1803],{"type":29,"value":1804},"96\n",{"type":23,"tag":351,"props":1806,"children":1808},{"class":353,"line":1807},89,[1809],{"type":23,"tag":351,"props":1810,"children":1811},{"style":358},[1812],{"type":29,"value":549},{"type":23,"tag":351,"props":1814,"children":1816},{"class":353,"line":1815},90,[1817,1822],{"type":23,"tag":351,"props":1818,"children":1819},{"style":368},[1820],{"type":29,"value":1821},"        \"ThresholdSensor_OutletTemp\"",{"type":23,"tag":351,"props":1823,"children":1824},{"style":358},[1825],{"type":29,"value":376},{"type":23,"tag":351,"props":1827,"children":1829},{"class":353,"line":1828},91,[1830,1834,1838,1843],{"type":23,"tag":351,"props":1831,"children":1832},{"style":368},[1833],{"type":29,"value":1133},{"type":23,"tag":351,"props":1835,"children":1836},{"style":358},[1837],{"type":29,"value":693},{"type":23,"tag":351,"props":1839,"children":1840},{"style":696},[1841],{"type":29,"value":1842},"29312",{"type":23,"tag":351,"props":1844,"children":1845},{"style":358},[1846],{"type":29,"value":418},{"type":23,"tag":351,"props":1848,"children":1850},{"class":353,"line":1849},92,[1851,1855,1859,1863],{"type":23,"tag":351,"props":1852,"children":1853},{"style":368},[1854],{"type":29,"value":1155},{"type":23,"tag":351,"props":1856,"children":1857},{"style":358},[1858],{"type":29,"value":693},{"type":23,"tag":351,"props":1860,"children":1861},{"style":696},[1862],{"type":29,"value":1842},{"type":23,"tag":351,"props":1864,"children":1865},{"style":358},[1866],{"type":29,"value":418},{"type":23,"tag":351,"props":1868,"children":1870},{"class":353,"line":1869},93,[1871,1875,1879,1884],{"type":23,"tag":351,"props":1872,"children":1873},{"style":368},[1874],{"type":29,"value":1176},{"type":23,"tag":351,"props":1876,"children":1877},{"style":358},[1878],{"type":29,"value":693},{"type":23,"tag":351,"props":1880,"children":1881},{"style":696},[1882],{"type":29,"value":1883},"6168",{"type":23,"tag":351,"props":1885,"children":1886},{"style":358},[1887],{"type":29,"value":418},{"type":23,"tag":351,"props":1889,"children":1891},{"class":353,"line":1890},94,[1892,1896,1900,1904],{"type":23,"tag":351,"props":1893,"children":1894},{"style":368},[1895],{"type":29,"value":1198},{"type":23,"tag":351,"props":1897,"children":1898},{"style":358},[1899],{"type":29,"value":693},{"type":23,"tag":351,"props":1901,"children":1902},{"style":696},[1903],{"type":29,"value":941},{"type":23,"tag":351,"props":1905,"children":1906},{"style":358},[1907],{"type":29,"value":418},{"type":23,"tag":351,"props":1909,"children":1911},{"class":353,"line":1910},95,[1912,1916,1920,1924],{"type":23,"tag":351,"props":1913,"children":1914},{"style":368},[1915],{"type":29,"value":1219},{"type":23,"tag":351,"props":1917,"children":1918},{"style":358},[1919],{"type":29,"value":693},{"type":23,"tag":351,"props":1921,"children":1922},{"style":696},[1923],{"type":29,"value":1228},{"type":23,"tag":351,"props":1925,"children":1926},{"style":358},[1927],{"type":29,"value":418},{"type":23,"tag":351,"props":1929,"children":1931},{"class":353,"line":1930},96,[1932,1936,1940,1944],{"type":23,"tag":351,"props":1933,"children":1934},{"style":368},[1935],{"type":29,"value":1241},{"type":23,"tag":351,"props":1937,"children":1938},{"style":358},[1939],{"type":29,"value":693},{"type":23,"tag":351,"props":1941,"children":1942},{"style":696},[1943],{"type":29,"value":1250},{"type":23,"tag":351,"props":1945,"children":1946},{"style":358},[1947],{"type":29,"value":418},{"type":23,"tag":351,"props":1949,"children":1951},{"class":353,"line":1950},97,[1952,1956,1960,1965],{"type":23,"tag":351,"props":1953,"children":1954},{"style":368},[1955],{"type":29,"value":1263},{"type":23,"tag":351,"props":1957,"children":1958},{"style":358},[1959],{"type":29,"value":693},{"type":23,"tag":351,"props":1961,"children":1962},{"style":696},[1963],{"type":29,"value":1964},"65",{"type":23,"tag":351,"props":1966,"children":1967},{"style":358},[1968],{"type":29,"value":418},{"type":23,"tag":351,"props":1970,"children":1972},{"class":353,"line":1971},98,[1973,1978,1982,1987],{"type":23,"tag":351,"props":1974,"children":1975},{"style":368},[1976],{"type":29,"value":1977},"            \"UpperNoncritical\"",{"type":23,"tag":351,"props":1979,"children":1980},{"style":358},[1981],{"type":29,"value":693},{"type":23,"tag":351,"props":1983,"children":1984},{"style":696},[1985],{"type":29,"value":1986},"50",{"type":23,"tag":351,"props":1988,"children":1989},{"style":358},[1990],{"type":29,"value":418},{"type":23,"tag":351,"props":1992,"children":1994},{"class":353,"line":1993},99,[1995,1999,2003,2007],{"type":23,"tag":351,"props":1996,"children":1997},{"style":368},[1998],{"type":29,"value":1307},{"type":23,"tag":351,"props":2000,"children":2001},{"style":358},[2002],{"type":29,"value":693},{"type":23,"tag":351,"props":2004,"children":2005},{"style":696},[2006],{"type":29,"value":1316},{"type":23,"tag":351,"props":2008,"children":2009},{"style":358},[2010],{"type":29,"value":418},{"type":23,"tag":351,"props":2012,"children":2014},{"class":353,"line":2013},100,[2015,2019,2023,2027],{"type":23,"tag":351,"props":2016,"children":2017},{"style":368},[2018],{"type":29,"value":1329},{"type":23,"tag":351,"props":2020,"children":2021},{"style":358},[2022],{"type":29,"value":693},{"type":23,"tag":351,"props":2024,"children":2025},{"style":696},[2026],{"type":29,"value":1316},{"type":23,"tag":351,"props":2028,"children":2029},{"style":358},[2030],{"type":29,"value":418},{"type":23,"tag":351,"props":2032,"children":2034},{"class":353,"line":2033},101,[2035,2039,2043,2047],{"type":23,"tag":351,"props":2036,"children":2037},{"style":368},[2038],{"type":29,"value":1350},{"type":23,"tag":351,"props":2040,"children":2041},{"style":358},[2042],{"type":29,"value":693},{"type":23,"tag":351,"props":2044,"children":2045},{"style":696},[2046],{"type":29,"value":1359},{"type":23,"tag":351,"props":2048,"children":2049},{"style":358},[2050],{"type":29,"value":418},{"type":23,"tag":351,"props":2052,"children":2054},{"class":353,"line":2053},102,[2055,2059,2063,2067],{"type":23,"tag":351,"props":2056,"children":2057},{"style":368},[2058],{"type":29,"value":1372},{"type":23,"tag":351,"props":2060,"children":2061},{"style":358},[2062],{"type":29,"value":693},{"type":23,"tag":351,"props":2064,"children":2065},{"style":696},[2066],{"type":29,"value":941},{"type":23,"tag":351,"props":2068,"children":2069},{"style":358},[2070],{"type":29,"value":418},{"type":23,"tag":351,"props":2072,"children":2074},{"class":353,"line":2073},103,[2075,2079,2083,2088],{"type":23,"tag":351,"props":2076,"children":2077},{"style":368},[2078],{"type":29,"value":1393},{"type":23,"tag":351,"props":2080,"children":2081},{"style":358},[2082],{"type":29,"value":693},{"type":23,"tag":351,"props":2084,"children":2085},{"style":410},[2086],{"type":29,"value":2087},"\"\u003C=\u002FEntity_OutletTemp.Id\"",{"type":23,"tag":351,"props":2089,"children":2090},{"style":358},[2091],{"type":29,"value":418},{"type":23,"tag":351,"props":2093,"children":2095},{"class":353,"line":2094},104,[2096,2100,2104,2109],{"type":23,"tag":351,"props":2097,"children":2098},{"style":368},[2099],{"type":29,"value":1415},{"type":23,"tag":351,"props":2101,"children":2102},{"style":358},[2103],{"type":29,"value":693},{"type":23,"tag":351,"props":2105,"children":2106},{"style":410},[2107],{"type":29,"value":2108},"\"\u003C=\u002FEntity_OutletTemp.Instance\"",{"type":23,"tag":351,"props":2110,"children":2111},{"style":358},[2112],{"type":29,"value":418},{"type":23,"tag":351,"props":2114,"children":2116},{"class":353,"line":2115},105,[2117,2121,2125,2129],{"type":23,"tag":351,"props":2118,"children":2119},{"style":368},[2120],{"type":29,"value":1437},{"type":23,"tag":351,"props":2122,"children":2123},{"style":358},[2124],{"type":29,"value":693},{"type":23,"tag":351,"props":2126,"children":2127},{"style":696},[2128],{"type":29,"value":1446},{"type":23,"tag":351,"props":2130,"children":2131},{"style":358},[2132],{"type":29,"value":418},{"type":23,"tag":351,"props":2134,"children":2136},{"class":353,"line":2135},106,[2137,2141,2145,2149],{"type":23,"tag":351,"props":2138,"children":2139},{"style":368},[2140],{"type":29,"value":1459},{"type":23,"tag":351,"props":2142,"children":2143},{"style":358},[2144],{"type":29,"value":693},{"type":23,"tag":351,"props":2146,"children":2147},{"style":696},[2148],{"type":29,"value":1468},{"type":23,"tag":351,"props":2150,"children":2151},{"style":358},[2152],{"type":29,"value":418},{"type":23,"tag":351,"props":2154,"children":2156},{"class":353,"line":2155},107,[2157,2161,2165,2169],{"type":23,"tag":351,"props":2158,"children":2159},{"style":368},[2160],{"type":29,"value":1481},{"type":23,"tag":351,"props":2162,"children":2163},{"style":358},[2164],{"type":29,"value":693},{"type":23,"tag":351,"props":2166,"children":2167},{"style":696},[2168],{"type":29,"value":738},{"type":23,"tag":351,"props":2170,"children":2171},{"style":358},[2172],{"type":29,"value":418},{"type":23,"tag":351,"props":2174,"children":2176},{"class":353,"line":2175},108,[2177,2181,2185,2189],{"type":23,"tag":351,"props":2178,"children":2179},{"style":368},[2180],{"type":29,"value":1502},{"type":23,"tag":351,"props":2182,"children":2183},{"style":358},[2184],{"type":29,"value":693},{"type":23,"tag":351,"props":2186,"children":2187},{"style":696},[2188],{"type":29,"value":738},{"type":23,"tag":351,"props":2190,"children":2191},{"style":358},[2192],{"type":29,"value":418},{"type":23,"tag":351,"props":2194,"children":2196},{"class":353,"line":2195},109,[2197,2201,2205,2210],{"type":23,"tag":351,"props":2198,"children":2199},{"style":368},[2200],{"type":29,"value":1523},{"type":23,"tag":351,"props":2202,"children":2203},{"style":358},[2204],{"type":29,"value":693},{"type":23,"tag":351,"props":2206,"children":2207},{"style":410},[2208],{"type":29,"value":2209},"\"Outlet_Temp\"",{"type":23,"tag":351,"props":2211,"children":2212},{"style":358},[2213],{"type":29,"value":418},{"type":23,"tag":351,"props":2215,"children":2217},{"class":353,"line":2216},110,[2218,2222,2226,2230],{"type":23,"tag":351,"props":2219,"children":2220},{"style":368},[2221],{"type":29,"value":1545},{"type":23,"tag":351,"props":2223,"children":2224},{"style":358},[2225],{"type":29,"value":693},{"type":23,"tag":351,"props":2227,"children":2228},{"style":696},[2229],{"type":29,"value":1554},{"type":23,"tag":351,"props":2231,"children":2232},{"style":358},[2233],{"type":29,"value":418},{"type":23,"tag":351,"props":2235,"children":2237},{"class":353,"line":2236},111,[2238,2242,2246,2250],{"type":23,"tag":351,"props":2239,"children":2240},{"style":368},[2241],{"type":29,"value":1567},{"type":23,"tag":351,"props":2243,"children":2244},{"style":358},[2245],{"type":29,"value":693},{"type":23,"tag":351,"props":2247,"children":2248},{"style":696},[2249],{"type":29,"value":738},{"type":23,"tag":351,"props":2251,"children":2252},{"style":358},[2253],{"type":29,"value":418},{"type":23,"tag":351,"props":2255,"children":2257},{"class":353,"line":2256},112,[2258,2262,2266,2270],{"type":23,"tag":351,"props":2259,"children":2260},{"style":368},[2261],{"type":29,"value":1588},{"type":23,"tag":351,"props":2263,"children":2264},{"style":358},[2265],{"type":29,"value":693},{"type":23,"tag":351,"props":2267,"children":2268},{"style":696},[2269],{"type":29,"value":941},{"type":23,"tag":351,"props":2271,"children":2272},{"style":358},[2273],{"type":29,"value":418},{"type":23,"tag":351,"props":2275,"children":2277},{"class":353,"line":2276},113,[2278,2282,2286,2290],{"type":23,"tag":351,"props":2279,"children":2280},{"style":368},[2281],{"type":29,"value":1609},{"type":23,"tag":351,"props":2283,"children":2284},{"style":358},[2285],{"type":29,"value":693},{"type":23,"tag":351,"props":2287,"children":2288},{"style":696},[2289],{"type":29,"value":738},{"type":23,"tag":351,"props":2291,"children":2292},{"style":358},[2293],{"type":29,"value":418},{"type":23,"tag":351,"props":2295,"children":2297},{"class":353,"line":2296},114,[2298,2302,2306,2310],{"type":23,"tag":351,"props":2299,"children":2300},{"style":368},[2301],{"type":29,"value":1630},{"type":23,"tag":351,"props":2303,"children":2304},{"style":358},[2305],{"type":29,"value":693},{"type":23,"tag":351,"props":2307,"children":2308},{"style":696},[2309],{"type":29,"value":1446},{"type":23,"tag":351,"props":2311,"children":2312},{"style":358},[2313],{"type":29,"value":418},{"type":23,"tag":351,"props":2315,"children":2317},{"class":353,"line":2316},115,[2318,2322,2326,2330],{"type":23,"tag":351,"props":2319,"children":2320},{"style":368},[2321],{"type":29,"value":1651},{"type":23,"tag":351,"props":2323,"children":2324},{"style":358},[2325],{"type":29,"value":693},{"type":23,"tag":351,"props":2327,"children":2328},{"style":696},[2329],{"type":29,"value":1554},{"type":23,"tag":351,"props":2331,"children":2332},{"style":358},[2333],{"type":29,"value":418},{"type":23,"tag":351,"props":2335,"children":2337},{"class":353,"line":2336},116,[2338,2342,2346],{"type":23,"tag":351,"props":2339,"children":2340},{"style":368},[2341],{"type":29,"value":1672},{"type":23,"tag":351,"props":2343,"children":2344},{"style":358},[2345],{"type":29,"value":693},{"type":23,"tag":351,"props":2347,"children":2348},{"style":410},[2349],{"type":29,"value":2350},"\"\u003C=\u002FScanner_OutletLM75.Value\"\n",{"type":23,"tag":351,"props":2352,"children":2354},{"class":353,"line":2353},117,[2355],{"type":23,"tag":351,"props":2356,"children":2357},{"style":358},[2358],{"type":29,"value":549},{"type":23,"tag":351,"props":2360,"children":2362},{"class":353,"line":2361},118,[2363,2368],{"type":23,"tag":351,"props":2364,"children":2365},{"style":368},[2366],{"type":29,"value":2367},"        \"Entity_OutletTemp\"",{"type":23,"tag":351,"props":2369,"children":2370},{"style":358},[2371],{"type":29,"value":376},{"type":23,"tag":351,"props":2373,"children":2375},{"class":353,"line":2374},119,[2376,2380,2384,2388],{"type":23,"tag":351,"props":2377,"children":2378},{"style":368},[2379],{"type":29,"value":688},{"type":23,"tag":351,"props":2381,"children":2382},{"style":358},[2383],{"type":29,"value":693},{"type":23,"tag":351,"props":2385,"children":2386},{"style":696},[2387],{"type":29,"value":1719},{"type":23,"tag":351,"props":2389,"children":2390},{"style":358},[2391],{"type":29,"value":418},{"type":23,"tag":351,"props":2393,"children":2395},{"class":353,"line":2394},120,[2396,2400,2404,2409],{"type":23,"tag":351,"props":2397,"children":2398},{"style":368},[2399],{"type":29,"value":1732},{"type":23,"tag":351,"props":2401,"children":2402},{"style":358},[2403],{"type":29,"value":693},{"type":23,"tag":351,"props":2405,"children":2406},{"style":410},[2407],{"type":29,"value":2408},"\"OutletTemp\"",{"type":23,"tag":351,"props":2410,"children":2411},{"style":358},[2412],{"type":29,"value":418},{"type":23,"tag":351,"props":2414,"children":2416},{"class":353,"line":2415},121,[2417,2421,2425,2429],{"type":23,"tag":351,"props":2418,"children":2419},{"style":368},[2420],{"type":29,"value":1753},{"type":23,"tag":351,"props":2422,"children":2423},{"style":358},[2424],{"type":29,"value":693},{"type":23,"tag":351,"props":2426,"children":2427},{"style":696},[2428],{"type":29,"value":738},{"type":23,"tag":351,"props":2430,"children":2431},{"style":358},[2432],{"type":29,"value":418},{"type":23,"tag":351,"props":2434,"children":2436},{"class":353,"line":2435},122,[2437,2441,2445,2449],{"type":23,"tag":351,"props":2438,"children":2439},{"style":368},[2440],{"type":29,"value":1774},{"type":23,"tag":351,"props":2442,"children":2443},{"style":358},[2444],{"type":29,"value":693},{"type":23,"tag":351,"props":2446,"children":2447},{"style":696},[2448],{"type":29,"value":738},{"type":23,"tag":351,"props":2450,"children":2451},{"style":358},[2452],{"type":29,"value":418},{"type":23,"tag":351,"props":2454,"children":2456},{"class":353,"line":2455},123,[2457,2461,2465],{"type":23,"tag":351,"props":2458,"children":2459},{"style":368},[2460],{"type":29,"value":1795},{"type":23,"tag":351,"props":2462,"children":2463},{"style":358},[2464],{"type":29,"value":693},{"type":23,"tag":351,"props":2466,"children":2467},{"style":696},[2468],{"type":29,"value":2469},"97\n",{"type":23,"tag":351,"props":2471,"children":2473},{"class":353,"line":2472},124,[2474],{"type":23,"tag":351,"props":2475,"children":2476},{"style":358},[2477],{"type":29,"value":549},{"type":23,"tag":351,"props":2479,"children":2481},{"class":353,"line":2480},125,[2482,2487],{"type":23,"tag":351,"props":2483,"children":2484},{"style":368},[2485],{"type":29,"value":2486},"        \"Connector_DemoCard\"",{"type":23,"tag":351,"props":2488,"children":2489},{"style":358},[2490],{"type":29,"value":376},{"type":23,"tag":351,"props":2492,"children":2494},{"class":353,"line":2493},126,[2495,2500,2504,2509],{"type":23,"tag":351,"props":2496,"children":2497},{"style":368},[2498],{"type":29,"value":2499},"            \"Bom\"",{"type":23,"tag":351,"props":2501,"children":2502},{"style":358},[2503],{"type":29,"value":693},{"type":23,"tag":351,"props":2505,"children":2506},{"style":410},[2507],{"type":29,"value":2508},"\"14100513\"",{"type":23,"tag":351,"props":2510,"children":2511},{"style":358},[2512],{"type":29,"value":418},{"type":23,"tag":351,"props":2514,"children":2516},{"class":353,"line":2515},127,[2517,2522,2526,2530],{"type":23,"tag":351,"props":2518,"children":2519},{"style":368},[2520],{"type":29,"value":2521},"            \"Slot\"",{"type":23,"tag":351,"props":2523,"children":2524},{"style":358},[2525],{"type":29,"value":693},{"type":23,"tag":351,"props":2527,"children":2528},{"style":696},[2529],{"type":29,"value":1316},{"type":23,"tag":351,"props":2531,"children":2532},{"style":358},[2533],{"type":29,"value":418},{"type":23,"tag":351,"props":2535,"children":2537},{"class":353,"line":2536},128,[2538,2543,2547,2552],{"type":23,"tag":351,"props":2539,"children":2540},{"style":368},[2541],{"type":29,"value":2542},"            \"Position\"",{"type":23,"tag":351,"props":2544,"children":2545},{"style":358},[2546],{"type":29,"value":693},{"type":23,"tag":351,"props":2548,"children":2549},{"style":696},[2550],{"type":29,"value":2551},"4",{"type":23,"tag":351,"props":2553,"children":2554},{"style":358},[2555],{"type":29,"value":418},{"type":23,"tag":351,"props":2557,"children":2559},{"class":353,"line":2558},129,[2560,2564,2568,2572],{"type":23,"tag":351,"props":2561,"children":2562},{"style":368},[2563],{"type":29,"value":1774},{"type":23,"tag":351,"props":2565,"children":2566},{"style":358},[2567],{"type":29,"value":693},{"type":23,"tag":351,"props":2569,"children":2570},{"style":696},[2571],{"type":29,"value":738},{"type":23,"tag":351,"props":2573,"children":2574},{"style":358},[2575],{"type":29,"value":418},{"type":23,"tag":351,"props":2577,"children":2579},{"class":353,"line":2578},130,[2580,2584,2588,2593],{"type":23,"tag":351,"props":2581,"children":2582},{"style":368},[2583],{"type":29,"value":688},{"type":23,"tag":351,"props":2585,"children":2586},{"style":358},[2587],{"type":29,"value":693},{"type":23,"tag":351,"props":2589,"children":2590},{"style":410},[2591],{"type":29,"value":2592},"\"DemoCard\"",{"type":23,"tag":351,"props":2594,"children":2595},{"style":358},[2596],{"type":29,"value":418},{"type":23,"tag":351,"props":2598,"children":2600},{"class":353,"line":2599},131,[2601,2606,2610,2615],{"type":23,"tag":351,"props":2602,"children":2603},{"style":368},[2604],{"type":29,"value":2605},"            \"AuxId\"",{"type":23,"tag":351,"props":2607,"children":2608},{"style":358},[2609],{"type":29,"value":693},{"type":23,"tag":351,"props":2611,"children":2612},{"style":410},[2613],{"type":29,"value":2614},"\"0\"",{"type":23,"tag":351,"props":2616,"children":2617},{"style":358},[2618],{"type":29,"value":418},{"type":23,"tag":351,"props":2620,"children":2622},{"class":353,"line":2621},132,[2623,2627],{"type":23,"tag":351,"props":2624,"children":2625},{"style":368},[2626],{"type":29,"value":398},{"type":23,"tag":351,"props":2628,"children":2629},{"style":358},[2630],{"type":29,"value":403},{"type":23,"tag":351,"props":2632,"children":2634},{"class":353,"line":2633},133,[2635],{"type":23,"tag":351,"props":2636,"children":2637},{"style":410},[2638],{"type":29,"value":2639},"                \"I2c_9\"\n",{"type":23,"tag":351,"props":2641,"children":2643},{"class":353,"line":2642},134,[2644],{"type":23,"tag":351,"props":2645,"children":2646},{"style":358},[2647],{"type":29,"value":606},{"type":23,"tag":351,"props":2649,"children":2651},{"class":353,"line":2650},135,[2652,2657,2661,2665],{"type":23,"tag":351,"props":2653,"children":2654},{"style":368},[2655],{"type":29,"value":2656},"            \"SystemId\"",{"type":23,"tag":351,"props":2658,"children":2659},{"style":358},[2660],{"type":29,"value":693},{"type":23,"tag":351,"props":2662,"children":2663},{"style":696},[2664],{"type":29,"value":738},{"type":23,"tag":351,"props":2666,"children":2667},{"style":358},[2668],{"type":29,"value":418},{"type":23,"tag":351,"props":2670,"children":2672},{"class":353,"line":2671},136,[2673,2678,2682,2687],{"type":23,"tag":351,"props":2674,"children":2675},{"style":368},[2676],{"type":29,"value":2677},"            \"ManagerId\"",{"type":23,"tag":351,"props":2679,"children":2680},{"style":358},[2681],{"type":29,"value":693},{"type":23,"tag":351,"props":2683,"children":2684},{"style":410},[2685],{"type":29,"value":2686},"\"1\"",{"type":23,"tag":351,"props":2688,"children":2689},{"style":358},[2690],{"type":29,"value":418},{"type":23,"tag":351,"props":2692,"children":2694},{"class":353,"line":2693},137,[2695,2700,2704,2708],{"type":23,"tag":351,"props":2696,"children":2697},{"style":368},[2698],{"type":29,"value":2699},"            \"ChassisId\"",{"type":23,"tag":351,"props":2701,"children":2702},{"style":358},[2703],{"type":29,"value":693},{"type":23,"tag":351,"props":2705,"children":2706},{"style":410},[2707],{"type":29,"value":2686},{"type":23,"tag":351,"props":2709,"children":2710},{"style":358},[2711],{"type":29,"value":418},{"type":23,"tag":351,"props":2713,"children":2715},{"class":353,"line":2714},138,[2716,2721,2725],{"type":23,"tag":351,"props":2717,"children":2718},{"style":368},[2719],{"type":29,"value":2720},"            \"IdentifyMode\"",{"type":23,"tag":351,"props":2722,"children":2723},{"style":358},[2724],{"type":29,"value":693},{"type":23,"tag":351,"props":2726,"children":2727},{"style":696},[2728],{"type":29,"value":2729},"2\n",{"type":23,"tag":351,"props":2731,"children":2733},{"class":353,"line":2732},139,[2734],{"type":23,"tag":351,"props":2735,"children":2736},{"style":358},[2737],{"type":29,"value":2738},"        }\n",{"type":23,"tag":351,"props":2740,"children":2742},{"class":353,"line":2741},140,[2743],{"type":23,"tag":351,"props":2744,"children":2745},{"style":358},[2746],{"type":29,"value":2747},"    }\n",{"type":23,"tag":351,"props":2749,"children":2751},{"class":353,"line":2750},141,[2752],{"type":23,"tag":351,"props":2753,"children":2754},{"style":358},[2755],{"type":29,"value":2756},"}\n",{"type":23,"tag":37,"props":2758,"children":2759},{},[2760,2762,2768,2770,2776],{"type":29,"value":2761},"As a CSR file is added, you need to add the path of the ",{"type":23,"tag":140,"props":2763,"children":2765},{"className":2764},[],[2766],{"type":29,"value":2767},"14100513_DemoCard_0.sr",{"type":29,"value":2769}," file to ",{"type":23,"tag":140,"props":2771,"children":2773},{"className":2772},[],[2774],{"type":29,"value":2775},"vpd\u002Fvendor\u002FHuawei\u002FServer\u002FKunpeng\u002FopenUBMC\u002Fprofile.txt",{"type":29,"value":2777},". In this example, the configuration is as follows:",{"type":23,"tag":341,"props":2779,"children":2782},{"className":2780,"code":2781,"language":29,"meta":9,"style":9},"language-text shiki shiki-themes github-light github-dark monokai","Huawei\u002FServer\u002FKunpeng\u002FopenUBMC\u002FPSR\u002F14100513_DemoCard_0.sr\n",[2783],{"type":23,"tag":140,"props":2784,"children":2785},{"__ignoreMap":9},[2786],{"type":23,"tag":351,"props":2787,"children":2788},{"class":353,"line":354},[2789],{"type":23,"tag":351,"props":2790,"children":2791},{},[2792],{"type":29,"value":2781},{"type":23,"tag":37,"props":2794,"children":2795},{},[2796,2798,2804,2806,2812],{"type":29,"value":2797},"PCA9546 can be configured as Pca9545. Note that ",{"type":23,"tag":140,"props":2799,"children":2801},{"className":2800},[],[2802],{"type":29,"value":2803},"Objects > I2cMux_Pca9545_i2c9_chan0 needs to be configured",{"type":29,"value":2805}," with ",{"type":23,"tag":140,"props":2807,"children":2809},{"className":2808},[],[2810],{"type":29,"value":2811},"ChannelId",{"type":29,"value":52},{"type":23,"tag":37,"props":2814,"children":2815},{},[2816,2818,2823],{"type":29,"value":2817},"Configure ",{"type":23,"tag":140,"props":2819,"children":2821},{"className":2820},[],[2822],{"type":29,"value":2767},{"type":29,"value":2824}," as follows:",{"type":23,"tag":341,"props":2826,"children":2828},{"className":343,"code":2827,"language":345,"meta":9,"style":9},"{\n    \"FormatVersion\": \"3.00\",\n    \"DataVersion\": \"3.00\",\n    \"ManagementTopology\": {\n        \"Anchor\": {\n            \"Buses\": [\n                \"I2c_9\"\n             ]\n        },\n        \"I2c_9\": {\n            \"Chips\": [\n                \"Pca9545_i2c9_chip\"\n            ]\n        },\n        \"Pca9545_i2c9_chip\": {\n            \"Buses\": [\n                \"I2cMux_Pca9545_i2c9_chan0\"\n            ]\n        },\n        \"I2cMux_Pca9545_i2c9_chan0\": {\n            \"Chips\": [\n                \"Lm75_3\"\n            ]\n        }\n    },\n    \"Objects\": {\n        \"Pca9545_i2c9_chip\": {\n            \"OffsetWidth\": 0,\n            \"AddrWidth\": 1,\n            \"Address\": 224,\n            \"WriteTmout\": 0,\n            \"ReadTmout\": 0,\n            \"HealthStatus\": 0\n        },\n        \"I2cMux_Pca9545_i2c9_chan0\": {\n            \"ChannelId\": 0\n        },\n        \"Lm75_3\": {\n            \"OffsetWidth\": 1,\n            \"AddrWidth\": 1,\n            \"Address\": 146\n        },\n        \"Scanner_NicLM75\": {\n            \"Chip\": \"#\u002FLm75_3\",\n            \"Size\": 1,\n            \"Offset\": 0,\n            \"Mask\": 255,\n            \"Period\": 1000\n        },\n        \"ThresholdSensor_DemoTemp\": {\n            \"AssertMask\": 31381,\n            \"DeassertMask\": 31381,\n            \"ReadingMask\": 16191,\n            \"Linearization\": 0,\n            \"M\": 100,\n            \"RBExp\": 224,\n            \"UpperNonrecoverable\": 70,\n            \"UpperCritical\": 65,\n            \"UpperNoncritical\": 55,\n            \"LowerNonrecoverable\": 0,\n            \"LowerCritical\": 5,\n            \"LowerNoncritical\": 10,\n            \"PositiveHysteresis\": 2,\n            \"NegativeHysteresis\": 2,\n            \"OwnerId\": 32,\n            \"OwnerLun\": 0,\n            \"EntityId\": \"\u003C=\u002FEntity_NicTemp.Id\",\n            \"EntityInstance\": \"\u003C=\u002FEntity_NicTemp.Instance\",\n            \"Initialization\": 127,\n            \"Capabilities\": 104,\n            \"SensorType\": 1,\n            \"ReadingType\": 1,\n            \"SensorName\": \"Nic_Temp\",\n            \"Unit\": 128,\n            \"BaseUnit\": 1,\n            \"ModifierUnit\": 0,\n            \"Analog\": 1,\n            \"MaximumReading\": 127,\n            \"MinimumReading\": 128,\n            \"Reading\": \"\u003C=\u002FScanner_NicLM75.Value\"\n        },\n        \"Entity_NicTemp\": {\n            \"Id\": 9,\n            \"Name\": \"Nic_Temp\",\n            \"PowerState\": 1,\n            \"Presence\": 1,\n            \"Instance\": 98\n        }\n    }\n}\n",[2829],{"type":23,"tag":140,"props":2830,"children":2831},{"__ignoreMap":9},[2832,2839,2860,2880,2891,2902,2913,2920,2928,2935,2946,2957,2965,2972,2979,2991,3002,3010,3017,3024,3036,3047,3055,3062,3069,3076,3087,3098,3117,3136,3155,3175,3195,3212,3219,3230,3246,3253,3265,3284,3303,3319,3326,3338,3358,3377,3396,3415,3430,3437,3449,3469,3488,3508,3527,3546,3565,3586,3605,3625,3645,3664,3685,3704,3723,3742,3761,3781,3801,3820,3839,3858,3877,3897,3916,3935,3954,3973,3992,4011,4027,4034,4046,4066,4085,4104,4123,4139,4146,4153],{"type":23,"tag":351,"props":2833,"children":2834},{"class":353,"line":354},[2835],{"type":23,"tag":351,"props":2836,"children":2837},{"style":358},[2838],{"type":29,"value":361},{"type":23,"tag":351,"props":2840,"children":2841},{"class":353,"line":364},[2842,2847,2851,2856],{"type":23,"tag":351,"props":2843,"children":2844},{"style":368},[2845],{"type":29,"value":2846},"    \"FormatVersion\"",{"type":23,"tag":351,"props":2848,"children":2849},{"style":358},[2850],{"type":29,"value":693},{"type":23,"tag":351,"props":2852,"children":2853},{"style":410},[2854],{"type":29,"value":2855},"\"3.00\"",{"type":23,"tag":351,"props":2857,"children":2858},{"style":358},[2859],{"type":29,"value":418},{"type":23,"tag":351,"props":2861,"children":2862},{"class":353,"line":379},[2863,2868,2872,2876],{"type":23,"tag":351,"props":2864,"children":2865},{"style":368},[2866],{"type":29,"value":2867},"    \"DataVersion\"",{"type":23,"tag":351,"props":2869,"children":2870},{"style":358},[2871],{"type":29,"value":693},{"type":23,"tag":351,"props":2873,"children":2874},{"style":410},[2875],{"type":29,"value":2855},{"type":23,"tag":351,"props":2877,"children":2878},{"style":358},[2879],{"type":29,"value":418},{"type":23,"tag":351,"props":2881,"children":2882},{"class":353,"line":392},[2883,2887],{"type":23,"tag":351,"props":2884,"children":2885},{"style":368},[2886],{"type":29,"value":371},{"type":23,"tag":351,"props":2888,"children":2889},{"style":358},[2890],{"type":29,"value":376},{"type":23,"tag":351,"props":2892,"children":2893},{"class":353,"line":406},[2894,2898],{"type":23,"tag":351,"props":2895,"children":2896},{"style":368},[2897],{"type":29,"value":385},{"type":23,"tag":351,"props":2899,"children":2900},{"style":358},[2901],{"type":29,"value":376},{"type":23,"tag":351,"props":2903,"children":2904},{"class":353,"line":421},[2905,2909],{"type":23,"tag":351,"props":2906,"children":2907},{"style":368},[2908],{"type":29,"value":398},{"type":23,"tag":351,"props":2910,"children":2911},{"style":358},[2912],{"type":29,"value":403},{"type":23,"tag":351,"props":2914,"children":2915},{"class":353,"line":434},[2916],{"type":23,"tag":351,"props":2917,"children":2918},{"style":410},[2919],{"type":29,"value":2639},{"type":23,"tag":351,"props":2921,"children":2922},{"class":353,"line":447},[2923],{"type":23,"tag":351,"props":2924,"children":2925},{"style":358},[2926],{"type":29,"value":2927},"             ]\n",{"type":23,"tag":351,"props":2929,"children":2930},{"class":353,"line":460},[2931],{"type":23,"tag":351,"props":2932,"children":2933},{"style":358},[2934],{"type":29,"value":549},{"type":23,"tag":351,"props":2936,"children":2937},{"class":353,"line":473},[2938,2942],{"type":23,"tag":351,"props":2939,"children":2940},{"style":368},[2941],{"type":29,"value":558},{"type":23,"tag":351,"props":2943,"children":2944},{"style":358},[2945],{"type":29,"value":376},{"type":23,"tag":351,"props":2947,"children":2948},{"class":353,"line":486},[2949,2953],{"type":23,"tag":351,"props":2950,"children":2951},{"style":368},[2952],{"type":29,"value":571},{"type":23,"tag":351,"props":2954,"children":2955},{"style":358},[2956],{"type":29,"value":403},{"type":23,"tag":351,"props":2958,"children":2959},{"class":353,"line":499},[2960],{"type":23,"tag":351,"props":2961,"children":2962},{"style":410},[2963],{"type":29,"value":2964},"                \"Pca9545_i2c9_chip\"\n",{"type":23,"tag":351,"props":2966,"children":2967},{"class":353,"line":512},[2968],{"type":23,"tag":351,"props":2969,"children":2970},{"style":358},[2971],{"type":29,"value":540},{"type":23,"tag":351,"props":2973,"children":2974},{"class":353,"line":525},[2975],{"type":23,"tag":351,"props":2976,"children":2977},{"style":358},[2978],{"type":29,"value":549},{"type":23,"tag":351,"props":2980,"children":2981},{"class":353,"line":534},[2982,2987],{"type":23,"tag":351,"props":2983,"children":2984},{"style":368},[2985],{"type":29,"value":2986},"        \"Pca9545_i2c9_chip\"",{"type":23,"tag":351,"props":2988,"children":2989},{"style":358},[2990],{"type":29,"value":376},{"type":23,"tag":351,"props":2992,"children":2993},{"class":353,"line":543},[2994,2998],{"type":23,"tag":351,"props":2995,"children":2996},{"style":368},[2997],{"type":29,"value":398},{"type":23,"tag":351,"props":2999,"children":3000},{"style":358},[3001],{"type":29,"value":403},{"type":23,"tag":351,"props":3003,"children":3004},{"class":353,"line":552},[3005],{"type":23,"tag":351,"props":3006,"children":3007},{"style":410},[3008],{"type":29,"value":3009},"                \"I2cMux_Pca9545_i2c9_chan0\"\n",{"type":23,"tag":351,"props":3011,"children":3012},{"class":353,"line":565},[3013],{"type":23,"tag":351,"props":3014,"children":3015},{"style":358},[3016],{"type":29,"value":540},{"type":23,"tag":351,"props":3018,"children":3019},{"class":353,"line":578},[3020],{"type":23,"tag":351,"props":3021,"children":3022},{"style":358},[3023],{"type":29,"value":549},{"type":23,"tag":351,"props":3025,"children":3026},{"class":353,"line":591},[3027,3032],{"type":23,"tag":351,"props":3028,"children":3029},{"style":368},[3030],{"type":29,"value":3031},"        \"I2cMux_Pca9545_i2c9_chan0\"",{"type":23,"tag":351,"props":3033,"children":3034},{"style":358},[3035],{"type":29,"value":376},{"type":23,"tag":351,"props":3037,"children":3038},{"class":353,"line":600},[3039,3043],{"type":23,"tag":351,"props":3040,"children":3041},{"style":368},[3042],{"type":29,"value":571},{"type":23,"tag":351,"props":3044,"children":3045},{"style":358},[3046],{"type":29,"value":403},{"type":23,"tag":351,"props":3048,"children":3049},{"class":353,"line":609},[3050],{"type":23,"tag":351,"props":3051,"children":3052},{"style":410},[3053],{"type":29,"value":3054},"                \"Lm75_3\"\n",{"type":23,"tag":351,"props":3056,"children":3057},{"class":353,"line":622},[3058],{"type":23,"tag":351,"props":3059,"children":3060},{"style":358},[3061],{"type":29,"value":540},{"type":23,"tag":351,"props":3063,"children":3064},{"class":353,"line":631},[3065],{"type":23,"tag":351,"props":3066,"children":3067},{"style":358},[3068],{"type":29,"value":2738},{"type":23,"tag":351,"props":3070,"children":3071},{"class":353,"line":639},[3072],{"type":23,"tag":351,"props":3073,"children":3074},{"style":358},[3075],{"type":29,"value":654},{"type":23,"tag":351,"props":3077,"children":3078},{"class":353,"line":648},[3079,3083],{"type":23,"tag":351,"props":3080,"children":3081},{"style":368},[3082],{"type":29,"value":663},{"type":23,"tag":351,"props":3084,"children":3085},{"style":358},[3086],{"type":29,"value":376},{"type":23,"tag":351,"props":3088,"children":3089},{"class":353,"line":657},[3090,3094],{"type":23,"tag":351,"props":3091,"children":3092},{"style":368},[3093],{"type":29,"value":2986},{"type":23,"tag":351,"props":3095,"children":3096},{"style":358},[3097],{"type":29,"value":376},{"type":23,"tag":351,"props":3099,"children":3100},{"class":353,"line":670},[3101,3105,3109,3113],{"type":23,"tag":351,"props":3102,"children":3103},{"style":368},[3104],{"type":29,"value":729},{"type":23,"tag":351,"props":3106,"children":3107},{"style":358},[3108],{"type":29,"value":693},{"type":23,"tag":351,"props":3110,"children":3111},{"style":696},[3112],{"type":29,"value":941},{"type":23,"tag":351,"props":3114,"children":3115},{"style":358},[3116],{"type":29,"value":418},{"type":23,"tag":351,"props":3118,"children":3119},{"class":353,"line":682},[3120,3124,3128,3132],{"type":23,"tag":351,"props":3121,"children":3122},{"style":368},[3123],{"type":29,"value":751},{"type":23,"tag":351,"props":3125,"children":3126},{"style":358},[3127],{"type":29,"value":693},{"type":23,"tag":351,"props":3129,"children":3130},{"style":696},[3131],{"type":29,"value":738},{"type":23,"tag":351,"props":3133,"children":3134},{"style":358},[3135],{"type":29,"value":418},{"type":23,"tag":351,"props":3137,"children":3138},{"class":353,"line":702},[3139,3143,3147,3151],{"type":23,"tag":351,"props":3140,"children":3141},{"style":368},[3142],{"type":29,"value":772},{"type":23,"tag":351,"props":3144,"children":3145},{"style":358},[3146],{"type":29,"value":693},{"type":23,"tag":351,"props":3148,"children":3149},{"style":696},[3150],{"type":29,"value":1250},{"type":23,"tag":351,"props":3152,"children":3153},{"style":358},[3154],{"type":29,"value":418},{"type":23,"tag":351,"props":3156,"children":3157},{"class":353,"line":710},[3158,3163,3167,3171],{"type":23,"tag":351,"props":3159,"children":3160},{"style":368},[3161],{"type":29,"value":3162},"            \"WriteTmout\"",{"type":23,"tag":351,"props":3164,"children":3165},{"style":358},[3166],{"type":29,"value":693},{"type":23,"tag":351,"props":3168,"children":3169},{"style":696},[3170],{"type":29,"value":941},{"type":23,"tag":351,"props":3172,"children":3173},{"style":358},[3174],{"type":29,"value":418},{"type":23,"tag":351,"props":3176,"children":3177},{"class":353,"line":723},[3178,3183,3187,3191],{"type":23,"tag":351,"props":3179,"children":3180},{"style":368},[3181],{"type":29,"value":3182},"            \"ReadTmout\"",{"type":23,"tag":351,"props":3184,"children":3185},{"style":358},[3186],{"type":29,"value":693},{"type":23,"tag":351,"props":3188,"children":3189},{"style":696},[3190],{"type":29,"value":941},{"type":23,"tag":351,"props":3192,"children":3193},{"style":358},[3194],{"type":29,"value":418},{"type":23,"tag":351,"props":3196,"children":3197},{"class":353,"line":745},[3198,3203,3207],{"type":23,"tag":351,"props":3199,"children":3200},{"style":368},[3201],{"type":29,"value":3202},"            \"HealthStatus\"",{"type":23,"tag":351,"props":3204,"children":3205},{"style":358},[3206],{"type":29,"value":693},{"type":23,"tag":351,"props":3208,"children":3209},{"style":696},[3210],{"type":29,"value":3211},"0\n",{"type":23,"tag":351,"props":3213,"children":3214},{"class":353,"line":766},[3215],{"type":23,"tag":351,"props":3216,"children":3217},{"style":358},[3218],{"type":29,"value":549},{"type":23,"tag":351,"props":3220,"children":3221},{"class":353,"line":784},[3222,3226],{"type":23,"tag":351,"props":3223,"children":3224},{"style":368},[3225],{"type":29,"value":3031},{"type":23,"tag":351,"props":3227,"children":3228},{"style":358},[3229],{"type":29,"value":376},{"type":23,"tag":351,"props":3231,"children":3232},{"class":353,"line":792},[3233,3238,3242],{"type":23,"tag":351,"props":3234,"children":3235},{"style":368},[3236],{"type":29,"value":3237},"            \"ChannelId\"",{"type":23,"tag":351,"props":3239,"children":3240},{"style":358},[3241],{"type":29,"value":693},{"type":23,"tag":351,"props":3243,"children":3244},{"style":696},[3245],{"type":29,"value":3211},{"type":23,"tag":351,"props":3247,"children":3248},{"class":353,"line":805},[3249],{"type":23,"tag":351,"props":3250,"children":3251},{"style":358},[3252],{"type":29,"value":549},{"type":23,"tag":351,"props":3254,"children":3255},{"class":353,"line":825},[3256,3261],{"type":23,"tag":351,"props":3257,"children":3258},{"style":368},[3259],{"type":29,"value":3260},"        \"Lm75_3\"",{"type":23,"tag":351,"props":3262,"children":3263},{"style":358},[3264],{"type":29,"value":376},{"type":23,"tag":351,"props":3266,"children":3267},{"class":353,"line":845},[3268,3272,3276,3280],{"type":23,"tag":351,"props":3269,"children":3270},{"style":368},[3271],{"type":29,"value":729},{"type":23,"tag":351,"props":3273,"children":3274},{"style":358},[3275],{"type":29,"value":693},{"type":23,"tag":351,"props":3277,"children":3278},{"style":696},[3279],{"type":29,"value":738},{"type":23,"tag":351,"props":3281,"children":3282},{"style":358},[3283],{"type":29,"value":418},{"type":23,"tag":351,"props":3285,"children":3286},{"class":353,"line":862},[3287,3291,3295,3299],{"type":23,"tag":351,"props":3288,"children":3289},{"style":368},[3290],{"type":29,"value":751},{"type":23,"tag":351,"props":3292,"children":3293},{"style":358},[3294],{"type":29,"value":693},{"type":23,"tag":351,"props":3296,"children":3297},{"style":696},[3298],{"type":29,"value":738},{"type":23,"tag":351,"props":3300,"children":3301},{"style":358},[3302],{"type":29,"value":418},{"type":23,"tag":351,"props":3304,"children":3305},{"class":353,"line":870},[3306,3310,3314],{"type":23,"tag":351,"props":3307,"children":3308},{"style":368},[3309],{"type":29,"value":772},{"type":23,"tag":351,"props":3311,"children":3312},{"style":358},[3313],{"type":29,"value":693},{"type":23,"tag":351,"props":3315,"children":3316},{"style":696},[3317],{"type":29,"value":3318},"146\n",{"type":23,"tag":351,"props":3320,"children":3321},{"class":353,"line":883},[3322],{"type":23,"tag":351,"props":3323,"children":3324},{"style":358},[3325],{"type":29,"value":549},{"type":23,"tag":351,"props":3327,"children":3328},{"class":353,"line":905},[3329,3334],{"type":23,"tag":351,"props":3330,"children":3331},{"style":368},[3332],{"type":29,"value":3333},"        \"Scanner_NicLM75\"",{"type":23,"tag":351,"props":3335,"children":3336},{"style":358},[3337],{"type":29,"value":376},{"type":23,"tag":351,"props":3339,"children":3340},{"class":353,"line":926},[3341,3345,3349,3354],{"type":23,"tag":351,"props":3342,"children":3343},{"style":368},[3344],{"type":29,"value":889},{"type":23,"tag":351,"props":3346,"children":3347},{"style":358},[3348],{"type":29,"value":693},{"type":23,"tag":351,"props":3350,"children":3351},{"style":410},[3352],{"type":29,"value":3353},"\"#\u002FLm75_3\"",{"type":23,"tag":351,"props":3355,"children":3356},{"style":358},[3357],{"type":29,"value":418},{"type":23,"tag":351,"props":3359,"children":3360},{"class":353,"line":948},[3361,3365,3369,3373],{"type":23,"tag":351,"props":3362,"children":3363},{"style":368},[3364],{"type":29,"value":911},{"type":23,"tag":351,"props":3366,"children":3367},{"style":358},[3368],{"type":29,"value":693},{"type":23,"tag":351,"props":3370,"children":3371},{"style":696},[3372],{"type":29,"value":738},{"type":23,"tag":351,"props":3374,"children":3375},{"style":358},[3376],{"type":29,"value":418},{"type":23,"tag":351,"props":3378,"children":3379},{"class":353,"line":970},[3380,3384,3388,3392],{"type":23,"tag":351,"props":3381,"children":3382},{"style":368},[3383],{"type":29,"value":932},{"type":23,"tag":351,"props":3385,"children":3386},{"style":358},[3387],{"type":29,"value":693},{"type":23,"tag":351,"props":3389,"children":3390},{"style":696},[3391],{"type":29,"value":941},{"type":23,"tag":351,"props":3393,"children":3394},{"style":358},[3395],{"type":29,"value":418},{"type":23,"tag":351,"props":3397,"children":3398},{"class":353,"line":988},[3399,3403,3407,3411],{"type":23,"tag":351,"props":3400,"children":3401},{"style":368},[3402],{"type":29,"value":954},{"type":23,"tag":351,"props":3404,"children":3405},{"style":358},[3406],{"type":29,"value":693},{"type":23,"tag":351,"props":3408,"children":3409},{"style":696},[3410],{"type":29,"value":963},{"type":23,"tag":351,"props":3412,"children":3413},{"style":358},[3414],{"type":29,"value":418},{"type":23,"tag":351,"props":3416,"children":3417},{"class":353,"line":996},[3418,3422,3426],{"type":23,"tag":351,"props":3419,"children":3420},{"style":368},[3421],{"type":29,"value":976},{"type":23,"tag":351,"props":3423,"children":3424},{"style":358},[3425],{"type":29,"value":693},{"type":23,"tag":351,"props":3427,"children":3428},{"style":696},[3429],{"type":29,"value":985},{"type":23,"tag":351,"props":3431,"children":3432},{"class":353,"line":1009},[3433],{"type":23,"tag":351,"props":3434,"children":3435},{"style":358},[3436],{"type":29,"value":549},{"type":23,"tag":351,"props":3438,"children":3439},{"class":353,"line":1030},[3440,3445],{"type":23,"tag":351,"props":3441,"children":3442},{"style":368},[3443],{"type":29,"value":3444},"        \"ThresholdSensor_DemoTemp\"",{"type":23,"tag":351,"props":3446,"children":3447},{"style":358},[3448],{"type":29,"value":376},{"type":23,"tag":351,"props":3450,"children":3451},{"class":353,"line":1050},[3452,3456,3460,3465],{"type":23,"tag":351,"props":3453,"children":3454},{"style":368},[3455],{"type":29,"value":1133},{"type":23,"tag":351,"props":3457,"children":3458},{"style":358},[3459],{"type":29,"value":693},{"type":23,"tag":351,"props":3461,"children":3462},{"style":696},[3463],{"type":29,"value":3464},"31381",{"type":23,"tag":351,"props":3466,"children":3467},{"style":358},[3468],{"type":29,"value":418},{"type":23,"tag":351,"props":3470,"children":3471},{"class":353,"line":1070},[3472,3476,3480,3484],{"type":23,"tag":351,"props":3473,"children":3474},{"style":368},[3475],{"type":29,"value":1155},{"type":23,"tag":351,"props":3477,"children":3478},{"style":358},[3479],{"type":29,"value":693},{"type":23,"tag":351,"props":3481,"children":3482},{"style":696},[3483],{"type":29,"value":3464},{"type":23,"tag":351,"props":3485,"children":3486},{"style":358},[3487],{"type":29,"value":418},{"type":23,"tag":351,"props":3489,"children":3490},{"class":353,"line":1090},[3491,3495,3499,3504],{"type":23,"tag":351,"props":3492,"children":3493},{"style":368},[3494],{"type":29,"value":1176},{"type":23,"tag":351,"props":3496,"children":3497},{"style":358},[3498],{"type":29,"value":693},{"type":23,"tag":351,"props":3500,"children":3501},{"style":696},[3502],{"type":29,"value":3503},"16191",{"type":23,"tag":351,"props":3505,"children":3506},{"style":358},[3507],{"type":29,"value":418},{"type":23,"tag":351,"props":3509,"children":3510},{"class":353,"line":1106},[3511,3515,3519,3523],{"type":23,"tag":351,"props":3512,"children":3513},{"style":368},[3514],{"type":29,"value":1198},{"type":23,"tag":351,"props":3516,"children":3517},{"style":358},[3518],{"type":29,"value":693},{"type":23,"tag":351,"props":3520,"children":3521},{"style":696},[3522],{"type":29,"value":941},{"type":23,"tag":351,"props":3524,"children":3525},{"style":358},[3526],{"type":29,"value":418},{"type":23,"tag":351,"props":3528,"children":3529},{"class":353,"line":1114},[3530,3534,3538,3542],{"type":23,"tag":351,"props":3531,"children":3532},{"style":368},[3533],{"type":29,"value":1219},{"type":23,"tag":351,"props":3535,"children":3536},{"style":358},[3537],{"type":29,"value":693},{"type":23,"tag":351,"props":3539,"children":3540},{"style":696},[3541],{"type":29,"value":1228},{"type":23,"tag":351,"props":3543,"children":3544},{"style":358},[3545],{"type":29,"value":418},{"type":23,"tag":351,"props":3547,"children":3548},{"class":353,"line":1127},[3549,3553,3557,3561],{"type":23,"tag":351,"props":3550,"children":3551},{"style":368},[3552],{"type":29,"value":1241},{"type":23,"tag":351,"props":3554,"children":3555},{"style":358},[3556],{"type":29,"value":693},{"type":23,"tag":351,"props":3558,"children":3559},{"style":696},[3560],{"type":29,"value":1250},{"type":23,"tag":351,"props":3562,"children":3563},{"style":358},[3564],{"type":29,"value":418},{"type":23,"tag":351,"props":3566,"children":3567},{"class":353,"line":1149},[3568,3573,3577,3582],{"type":23,"tag":351,"props":3569,"children":3570},{"style":368},[3571],{"type":29,"value":3572},"            \"UpperNonrecoverable\"",{"type":23,"tag":351,"props":3574,"children":3575},{"style":358},[3576],{"type":29,"value":693},{"type":23,"tag":351,"props":3578,"children":3579},{"style":696},[3580],{"type":29,"value":3581},"70",{"type":23,"tag":351,"props":3583,"children":3584},{"style":358},[3585],{"type":29,"value":418},{"type":23,"tag":351,"props":3587,"children":3588},{"class":353,"line":1170},[3589,3593,3597,3601],{"type":23,"tag":351,"props":3590,"children":3591},{"style":368},[3592],{"type":29,"value":1263},{"type":23,"tag":351,"props":3594,"children":3595},{"style":358},[3596],{"type":29,"value":693},{"type":23,"tag":351,"props":3598,"children":3599},{"style":696},[3600],{"type":29,"value":1964},{"type":23,"tag":351,"props":3602,"children":3603},{"style":358},[3604],{"type":29,"value":418},{"type":23,"tag":351,"props":3606,"children":3607},{"class":353,"line":1192},[3608,3612,3616,3621],{"type":23,"tag":351,"props":3609,"children":3610},{"style":368},[3611],{"type":29,"value":1977},{"type":23,"tag":351,"props":3613,"children":3614},{"style":358},[3615],{"type":29,"value":693},{"type":23,"tag":351,"props":3617,"children":3618},{"style":696},[3619],{"type":29,"value":3620},"55",{"type":23,"tag":351,"props":3622,"children":3623},{"style":358},[3624],{"type":29,"value":418},{"type":23,"tag":351,"props":3626,"children":3627},{"class":353,"line":1213},[3628,3633,3637,3641],{"type":23,"tag":351,"props":3629,"children":3630},{"style":368},[3631],{"type":29,"value":3632},"            \"LowerNonrecoverable\"",{"type":23,"tag":351,"props":3634,"children":3635},{"style":358},[3636],{"type":29,"value":693},{"type":23,"tag":351,"props":3638,"children":3639},{"style":696},[3640],{"type":29,"value":941},{"type":23,"tag":351,"props":3642,"children":3643},{"style":358},[3644],{"type":29,"value":418},{"type":23,"tag":351,"props":3646,"children":3647},{"class":353,"line":1235},[3648,3652,3656,3660],{"type":23,"tag":351,"props":3649,"children":3650},{"style":368},[3651],{"type":29,"value":1285},{"type":23,"tag":351,"props":3653,"children":3654},{"style":358},[3655],{"type":29,"value":693},{"type":23,"tag":351,"props":3657,"children":3658},{"style":696},[3659],{"type":29,"value":1294},{"type":23,"tag":351,"props":3661,"children":3662},{"style":358},[3663],{"type":29,"value":418},{"type":23,"tag":351,"props":3665,"children":3666},{"class":353,"line":1257},[3667,3672,3676,3681],{"type":23,"tag":351,"props":3668,"children":3669},{"style":368},[3670],{"type":29,"value":3671},"            \"LowerNoncritical\"",{"type":23,"tag":351,"props":3673,"children":3674},{"style":358},[3675],{"type":29,"value":693},{"type":23,"tag":351,"props":3677,"children":3678},{"style":696},[3679],{"type":29,"value":3680},"10",{"type":23,"tag":351,"props":3682,"children":3683},{"style":358},[3684],{"type":29,"value":418},{"type":23,"tag":351,"props":3686,"children":3687},{"class":353,"line":1279},[3688,3692,3696,3700],{"type":23,"tag":351,"props":3689,"children":3690},{"style":368},[3691],{"type":29,"value":1307},{"type":23,"tag":351,"props":3693,"children":3694},{"style":358},[3695],{"type":29,"value":693},{"type":23,"tag":351,"props":3697,"children":3698},{"style":696},[3699],{"type":29,"value":1316},{"type":23,"tag":351,"props":3701,"children":3702},{"style":358},[3703],{"type":29,"value":418},{"type":23,"tag":351,"props":3705,"children":3706},{"class":353,"line":1301},[3707,3711,3715,3719],{"type":23,"tag":351,"props":3708,"children":3709},{"style":368},[3710],{"type":29,"value":1329},{"type":23,"tag":351,"props":3712,"children":3713},{"style":358},[3714],{"type":29,"value":693},{"type":23,"tag":351,"props":3716,"children":3717},{"style":696},[3718],{"type":29,"value":1316},{"type":23,"tag":351,"props":3720,"children":3721},{"style":358},[3722],{"type":29,"value":418},{"type":23,"tag":351,"props":3724,"children":3725},{"class":353,"line":1323},[3726,3730,3734,3738],{"type":23,"tag":351,"props":3727,"children":3728},{"style":368},[3729],{"type":29,"value":1350},{"type":23,"tag":351,"props":3731,"children":3732},{"style":358},[3733],{"type":29,"value":693},{"type":23,"tag":351,"props":3735,"children":3736},{"style":696},[3737],{"type":29,"value":1359},{"type":23,"tag":351,"props":3739,"children":3740},{"style":358},[3741],{"type":29,"value":418},{"type":23,"tag":351,"props":3743,"children":3744},{"class":353,"line":1344},[3745,3749,3753,3757],{"type":23,"tag":351,"props":3746,"children":3747},{"style":368},[3748],{"type":29,"value":1372},{"type":23,"tag":351,"props":3750,"children":3751},{"style":358},[3752],{"type":29,"value":693},{"type":23,"tag":351,"props":3754,"children":3755},{"style":696},[3756],{"type":29,"value":941},{"type":23,"tag":351,"props":3758,"children":3759},{"style":358},[3760],{"type":29,"value":418},{"type":23,"tag":351,"props":3762,"children":3763},{"class":353,"line":1366},[3764,3768,3772,3777],{"type":23,"tag":351,"props":3765,"children":3766},{"style":368},[3767],{"type":29,"value":1393},{"type":23,"tag":351,"props":3769,"children":3770},{"style":358},[3771],{"type":29,"value":693},{"type":23,"tag":351,"props":3773,"children":3774},{"style":410},[3775],{"type":29,"value":3776},"\"\u003C=\u002FEntity_NicTemp.Id\"",{"type":23,"tag":351,"props":3778,"children":3779},{"style":358},[3780],{"type":29,"value":418},{"type":23,"tag":351,"props":3782,"children":3783},{"class":353,"line":1387},[3784,3788,3792,3797],{"type":23,"tag":351,"props":3785,"children":3786},{"style":368},[3787],{"type":29,"value":1415},{"type":23,"tag":351,"props":3789,"children":3790},{"style":358},[3791],{"type":29,"value":693},{"type":23,"tag":351,"props":3793,"children":3794},{"style":410},[3795],{"type":29,"value":3796},"\"\u003C=\u002FEntity_NicTemp.Instance\"",{"type":23,"tag":351,"props":3798,"children":3799},{"style":358},[3800],{"type":29,"value":418},{"type":23,"tag":351,"props":3802,"children":3803},{"class":353,"line":1409},[3804,3808,3812,3816],{"type":23,"tag":351,"props":3805,"children":3806},{"style":368},[3807],{"type":29,"value":1437},{"type":23,"tag":351,"props":3809,"children":3810},{"style":358},[3811],{"type":29,"value":693},{"type":23,"tag":351,"props":3813,"children":3814},{"style":696},[3815],{"type":29,"value":1446},{"type":23,"tag":351,"props":3817,"children":3818},{"style":358},[3819],{"type":29,"value":418},{"type":23,"tag":351,"props":3821,"children":3822},{"class":353,"line":1431},[3823,3827,3831,3835],{"type":23,"tag":351,"props":3824,"children":3825},{"style":368},[3826],{"type":29,"value":1459},{"type":23,"tag":351,"props":3828,"children":3829},{"style":358},[3830],{"type":29,"value":693},{"type":23,"tag":351,"props":3832,"children":3833},{"style":696},[3834],{"type":29,"value":1468},{"type":23,"tag":351,"props":3836,"children":3837},{"style":358},[3838],{"type":29,"value":418},{"type":23,"tag":351,"props":3840,"children":3841},{"class":353,"line":1453},[3842,3846,3850,3854],{"type":23,"tag":351,"props":3843,"children":3844},{"style":368},[3845],{"type":29,"value":1481},{"type":23,"tag":351,"props":3847,"children":3848},{"style":358},[3849],{"type":29,"value":693},{"type":23,"tag":351,"props":3851,"children":3852},{"style":696},[3853],{"type":29,"value":738},{"type":23,"tag":351,"props":3855,"children":3856},{"style":358},[3857],{"type":29,"value":418},{"type":23,"tag":351,"props":3859,"children":3860},{"class":353,"line":1475},[3861,3865,3869,3873],{"type":23,"tag":351,"props":3862,"children":3863},{"style":368},[3864],{"type":29,"value":1502},{"type":23,"tag":351,"props":3866,"children":3867},{"style":358},[3868],{"type":29,"value":693},{"type":23,"tag":351,"props":3870,"children":3871},{"style":696},[3872],{"type":29,"value":738},{"type":23,"tag":351,"props":3874,"children":3875},{"style":358},[3876],{"type":29,"value":418},{"type":23,"tag":351,"props":3878,"children":3879},{"class":353,"line":1496},[3880,3884,3888,3893],{"type":23,"tag":351,"props":3881,"children":3882},{"style":368},[3883],{"type":29,"value":1523},{"type":23,"tag":351,"props":3885,"children":3886},{"style":358},[3887],{"type":29,"value":693},{"type":23,"tag":351,"props":3889,"children":3890},{"style":410},[3891],{"type":29,"value":3892},"\"Nic_Temp\"",{"type":23,"tag":351,"props":3894,"children":3895},{"style":358},[3896],{"type":29,"value":418},{"type":23,"tag":351,"props":3898,"children":3899},{"class":353,"line":1517},[3900,3904,3908,3912],{"type":23,"tag":351,"props":3901,"children":3902},{"style":368},[3903],{"type":29,"value":1545},{"type":23,"tag":351,"props":3905,"children":3906},{"style":358},[3907],{"type":29,"value":693},{"type":23,"tag":351,"props":3909,"children":3910},{"style":696},[3911],{"type":29,"value":1554},{"type":23,"tag":351,"props":3913,"children":3914},{"style":358},[3915],{"type":29,"value":418},{"type":23,"tag":351,"props":3917,"children":3918},{"class":353,"line":1539},[3919,3923,3927,3931],{"type":23,"tag":351,"props":3920,"children":3921},{"style":368},[3922],{"type":29,"value":1567},{"type":23,"tag":351,"props":3924,"children":3925},{"style":358},[3926],{"type":29,"value":693},{"type":23,"tag":351,"props":3928,"children":3929},{"style":696},[3930],{"type":29,"value":738},{"type":23,"tag":351,"props":3932,"children":3933},{"style":358},[3934],{"type":29,"value":418},{"type":23,"tag":351,"props":3936,"children":3937},{"class":353,"line":1561},[3938,3942,3946,3950],{"type":23,"tag":351,"props":3939,"children":3940},{"style":368},[3941],{"type":29,"value":1588},{"type":23,"tag":351,"props":3943,"children":3944},{"style":358},[3945],{"type":29,"value":693},{"type":23,"tag":351,"props":3947,"children":3948},{"style":696},[3949],{"type":29,"value":941},{"type":23,"tag":351,"props":3951,"children":3952},{"style":358},[3953],{"type":29,"value":418},{"type":23,"tag":351,"props":3955,"children":3956},{"class":353,"line":1582},[3957,3961,3965,3969],{"type":23,"tag":351,"props":3958,"children":3959},{"style":368},[3960],{"type":29,"value":1609},{"type":23,"tag":351,"props":3962,"children":3963},{"style":358},[3964],{"type":29,"value":693},{"type":23,"tag":351,"props":3966,"children":3967},{"style":696},[3968],{"type":29,"value":738},{"type":23,"tag":351,"props":3970,"children":3971},{"style":358},[3972],{"type":29,"value":418},{"type":23,"tag":351,"props":3974,"children":3975},{"class":353,"line":1603},[3976,3980,3984,3988],{"type":23,"tag":351,"props":3977,"children":3978},{"style":368},[3979],{"type":29,"value":1630},{"type":23,"tag":351,"props":3981,"children":3982},{"style":358},[3983],{"type":29,"value":693},{"type":23,"tag":351,"props":3985,"children":3986},{"style":696},[3987],{"type":29,"value":1446},{"type":23,"tag":351,"props":3989,"children":3990},{"style":358},[3991],{"type":29,"value":418},{"type":23,"tag":351,"props":3993,"children":3994},{"class":353,"line":1624},[3995,3999,4003,4007],{"type":23,"tag":351,"props":3996,"children":3997},{"style":368},[3998],{"type":29,"value":1651},{"type":23,"tag":351,"props":4000,"children":4001},{"style":358},[4002],{"type":29,"value":693},{"type":23,"tag":351,"props":4004,"children":4005},{"style":696},[4006],{"type":29,"value":1554},{"type":23,"tag":351,"props":4008,"children":4009},{"style":358},[4010],{"type":29,"value":418},{"type":23,"tag":351,"props":4012,"children":4013},{"class":353,"line":1645},[4014,4018,4022],{"type":23,"tag":351,"props":4015,"children":4016},{"style":368},[4017],{"type":29,"value":1672},{"type":23,"tag":351,"props":4019,"children":4020},{"style":358},[4021],{"type":29,"value":693},{"type":23,"tag":351,"props":4023,"children":4024},{"style":410},[4025],{"type":29,"value":4026},"\"\u003C=\u002FScanner_NicLM75.Value\"\n",{"type":23,"tag":351,"props":4028,"children":4029},{"class":353,"line":1666},[4030],{"type":23,"tag":351,"props":4031,"children":4032},{"style":358},[4033],{"type":29,"value":549},{"type":23,"tag":351,"props":4035,"children":4036},{"class":353,"line":1684},[4037,4042],{"type":23,"tag":351,"props":4038,"children":4039},{"style":368},[4040],{"type":29,"value":4041},"        \"Entity_NicTemp\"",{"type":23,"tag":351,"props":4043,"children":4044},{"style":358},[4045],{"type":29,"value":376},{"type":23,"tag":351,"props":4047,"children":4048},{"class":353,"line":1692},[4049,4053,4057,4062],{"type":23,"tag":351,"props":4050,"children":4051},{"style":368},[4052],{"type":29,"value":688},{"type":23,"tag":351,"props":4054,"children":4055},{"style":358},[4056],{"type":29,"value":693},{"type":23,"tag":351,"props":4058,"children":4059},{"style":696},[4060],{"type":29,"value":4061},"9",{"type":23,"tag":351,"props":4063,"children":4064},{"style":358},[4065],{"type":29,"value":418},{"type":23,"tag":351,"props":4067,"children":4068},{"class":353,"line":1705},[4069,4073,4077,4081],{"type":23,"tag":351,"props":4070,"children":4071},{"style":368},[4072],{"type":29,"value":1732},{"type":23,"tag":351,"props":4074,"children":4075},{"style":358},[4076],{"type":29,"value":693},{"type":23,"tag":351,"props":4078,"children":4079},{"style":410},[4080],{"type":29,"value":3892},{"type":23,"tag":351,"props":4082,"children":4083},{"style":358},[4084],{"type":29,"value":418},{"type":23,"tag":351,"props":4086,"children":4087},{"class":353,"line":1726},[4088,4092,4096,4100],{"type":23,"tag":351,"props":4089,"children":4090},{"style":368},[4091],{"type":29,"value":1753},{"type":23,"tag":351,"props":4093,"children":4094},{"style":358},[4095],{"type":29,"value":693},{"type":23,"tag":351,"props":4097,"children":4098},{"style":696},[4099],{"type":29,"value":738},{"type":23,"tag":351,"props":4101,"children":4102},{"style":358},[4103],{"type":29,"value":418},{"type":23,"tag":351,"props":4105,"children":4106},{"class":353,"line":1747},[4107,4111,4115,4119],{"type":23,"tag":351,"props":4108,"children":4109},{"style":368},[4110],{"type":29,"value":1774},{"type":23,"tag":351,"props":4112,"children":4113},{"style":358},[4114],{"type":29,"value":693},{"type":23,"tag":351,"props":4116,"children":4117},{"style":696},[4118],{"type":29,"value":738},{"type":23,"tag":351,"props":4120,"children":4121},{"style":358},[4122],{"type":29,"value":418},{"type":23,"tag":351,"props":4124,"children":4125},{"class":353,"line":1768},[4126,4130,4134],{"type":23,"tag":351,"props":4127,"children":4128},{"style":368},[4129],{"type":29,"value":1795},{"type":23,"tag":351,"props":4131,"children":4132},{"style":358},[4133],{"type":29,"value":693},{"type":23,"tag":351,"props":4135,"children":4136},{"style":696},[4137],{"type":29,"value":4138},"98\n",{"type":23,"tag":351,"props":4140,"children":4141},{"class":353,"line":1789},[4142],{"type":23,"tag":351,"props":4143,"children":4144},{"style":358},[4145],{"type":29,"value":2738},{"type":23,"tag":351,"props":4147,"children":4148},{"class":353,"line":1807},[4149],{"type":23,"tag":351,"props":4150,"children":4151},{"style":358},[4152],{"type":29,"value":2747},{"type":23,"tag":351,"props":4154,"children":4155},{"class":353,"line":1815},[4156],{"type":23,"tag":351,"props":4157,"children":4158},{"style":358},[4159],{"type":29,"value":2756},{"type":23,"tag":4161,"props":4162,"children":4164},"h2",{"id":4163},"sensor-webui",[4165],{"type":29,"value":4166},"Sensor WebUI",{"type":23,"tag":37,"props":4168,"children":4169},{},[4170],{"type":29,"value":4171},"After the preceding configurations are complete, the sensor WebUI is properly displayed.",{"type":23,"tag":4173,"props":4174,"children":4175},"style",{},[4176],{"type":29,"value":4177},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":9,"searchDepth":392,"depth":392,"links":4179},[4180],{"id":4163,"depth":364,"text":4166},"markdown","content:en:blogs:hi3093-dev-board-i2c.md","content","en\u002Fblogs\u002Fhi3093-dev-board-i2c.md","en\u002Fblogs\u002Fhi3093-dev-board-i2c","md","Sensor Function Adaptation and Debugging for the Hi3093 Development Board (openubmc.cn) Introduction This article describes the common debugging and adaptation methods for adapting I2C sensors based on the  MYC-LHi3093 development board . Material Preparation Hi3093 core board Power adapter of the core board Network cable Type-C USB cable Jumper wires Expansion board (with the LM75 sensor) I2C Tool Application Currently, openUBMC 2506 version does not support I2C tools to perform i2cdetect and i2ctransfer operations. This article references the post  Self-made I2C Debugging Tool  (i2cdetect and i2ctransfer for openUBMC) and uploads i2cdetect and i2ctransfer to the \u002Fdata directory using SCP. Sensor Debugging According to the hardware schematic diagram of the development board, connect the BMC I2C bus through pin headers on the development board to the external debugging board through jumper wires. The following figure shows the connections of the power supply, GND, SDA, and SCL on I2C9.  It is known that I2C9 is mounted with LM75(0x48), LM75(0x4f), and PCA9546(0x70), and PCA9546 channel0 is connected to LM75(0x49). Run the  .\u002Fi2cdetect 9  command in the \u002Fdata directory. It shows that preceding devices have been detected correctly.  Run the  .\u002Fi2ctransfer 9  w2@0x70 0x01 command to enable PCA9546 channel0. Then run the  .\u002Fi2cdetect 9  command. LM75(0x49) can be detected now.  The lower four bits of the PCA9546 control register correspond to four channels. You can use i2ctransfer to enable a specified channel and check whether the I2C device connected to the channel is normal.  You can run the following commands to enable the four channels of PCA9546 independently. Writing 0x00 to PCA9546 can disable all channels. Channel ID Command Channel 0 i2ctransfer \u003Ci2cbus> w1@0x70 0x01 Channel 1 i2ctransfer \u003Ci2cbus> w1@0x70 0x02 Channel 2 i2ctransfer \u003Ci2cbus> w1@0x70 0x04 Channel 3 i2ctransfer \u003Ci2cbus> w1@0x70 0x08 Sensor Configuration The following uses the board name openUBMC as an example. Configure the  vpd\u002Fvendor\u002FHuawei\u002FServer\u002FKunpeng\u002FopenUBMC\u002Froot.sr  file as follows: Add I2c_9 to ManagementTopology > Anchor > Buses. Add the LM75 sensor chip and Connectors configuration under I2c_9. Within the Connector section, configure Connector_DemoCard to indicate that PCA9546 is located in the CSR of the downstream component DemoCard. Under Objects, configure the LM75 object, Entity, and ThresholdSensor. Since this sensor obtains values through periodic polling, Scanner must also be configured. Also under Objects, configure Connector_DemoCard. An IdentifyMode value of 2 indicates that the downstream component is not a Tianchi component. Non-Tianchi components utilize three configuration items (Bom, Id, and AuxID) to determine the downstream component CSR name, which is formatted as: Bom_Id_AuxId.csr. In this example, the downstream component CSR name is 14100513_DemoCard_0.sr. The I2c_9 configuration within Buses indicates that the bus connecting to the downstream board is I2C9. Note that Position of any two connectors within the same CSR file cannot be duplicated. {\n     \"ManagementTopology\" : {\n         \"Anchor\" : {\n             \"Buses\" : [\n                 \"I2c_1\" ,\n                 \"I2c_2\" ,\n                 \"I2c_3\" ,\n                 \"I2c_4\" ,\n                 \"I2c_5\" ,\n                 \"I2c_6\" ,\n                 \"I2c_7\" ,\n                 \"I2c_8\" ,\n                 \"I2c_9\" ,\n                 \"I2c_11\"\n             ]\n         },\n         \"I2c_9\" : {\n             \"Chips\" : [\n                 \"Lm75_1\" ,\n                 \"Lm75_2\"\n             ],\n             \"Connectors\" : [\n                 \"Connector_DemoCard\"\n             ]\n        }\n     },\n     \"Objects\" : {\n         \"I2c_9\" : {\n             \"Id\" :  9\n         },\n         \"Lm75_1\" : {\n             \"OffsetWidth\" :  1 ,\n             \"AddrWidth\" :  1 ,\n             \"Address\" :  144\n         },\n         \"Lm75_2\" : {\n             \"OffsetWidth\" :  1 ,\n             \"AddrWidth\" :  1 ,\n             \"Address\" :  158\n         },\n         \"Scanner_InletLM75\" : {\n             \"Chip\" :  \"#\u002FLm75_1\" ,\n             \"Size\" :  1 ,\n             \"Offset\" :  0 ,\n             \"Mask\" :  255 ,\n             \"Period\" :  1000\n         },\n         \"Scanner_OutletLM75\" : {\n             \"Chip\" :  \"#\u002FLm75_2\" ,\n             \"Size\" :  1 ,\n             \"Offset\" :  0 ,\n             \"Mask\" :  255 ,\n             \"Period\" :  1000\n         },\n         \"ThresholdSensor_InletTemp\" : {\n             \"AssertMask\" :  516 ,\n             \"DeassertMask\" :  516 ,\n             \"ReadingMask\" :  4626 ,\n             \"Linearization\" :  0 ,\n             \"M\" :  100 ,\n             \"RBExp\" :  224 ,\n             \"UpperCritical\" :  60 ,\n             \"LowerCritical\" :  5 ,\n             \"PositiveHysteresis\" :  2 ,\n             \"NegativeHysteresis\" :  2 ,\n             \"OwnerId\" :  32 ,\n             \"OwnerLun\" :  0 ,\n             \"EntityId\" :  \"\u003C=\u002FEntity_InletTemp.Id\" ,\n             \"EntityInstance\" :  \"\u003C=\u002FEntity_InletTemp.Instance\" ,\n             \"Initialization\" :  127 ,\n             \"Capabilities\" :  104 ,\n             \"SensorType\" :  1 ,\n             \"ReadingType\" :  1 ,\n             \"SensorName\" :  \"Inlet_Temp\" ,\n             \"Unit\" :  128 ,\n             \"BaseUnit\" :  1 ,\n             \"ModifierUnit\" :  0 ,\n             \"Analog\" :  1 ,\n             \"MaximumReading\" :  127 ,\n             \"MinimumReading\" :  128 ,\n             \"Reading\" :  \"\u003C=\u002FScanner_InletLM75.Value\"\n         },\n         \"Entity_InletTemp\" : {\n             \"Id\" :  99 ,\n             \"Name\" :  \"Inlet_Temp\" ,\n             \"PowerState\" :  1 ,\n             \"Presence\" :  1 ,\n             \"Instance\" :  96\n         },\n         \"ThresholdSensor_OutletTemp\" : {\n             \"AssertMask\" :  29312 ,\n             \"DeassertMask\" :  29312 ,\n             \"ReadingMask\" :  6168 ,\n             \"Linearization\" :  0 ,\n             \"M\" :  100 ,\n             \"RBExp\" :  224 ,\n             \"UpperCritical\" :  65 ,\n             \"UpperNoncritical\" :  50 ,\n             \"PositiveHysteresis\" :  2 ,\n             \"NegativeHysteresis\" :  2 ,\n             \"OwnerId\" :  32 ,\n             \"OwnerLun\" :  0 ,\n             \"EntityId\" :  \"\u003C=\u002FEntity_OutletTemp.Id\" ,\n             \"EntityInstance\" :  \"\u003C=\u002FEntity_OutletTemp.Instance\" ,\n             \"Initialization\" :  127 ,\n             \"Capabilities\" :  104 ,\n             \"SensorType\" :  1 ,\n             \"ReadingType\" :  1 ,\n             \"SensorName\" :  \"Outlet_Temp\" ,\n             \"Unit\" :  128 ,\n             \"BaseUnit\" :  1 ,\n             \"ModifierUnit\" :  0 ,\n             \"Analog\" :  1 ,\n             \"MaximumReading\" :  127 ,\n             \"MinimumReading\" :  128 ,\n             \"Reading\" :  \"\u003C=\u002FScanner_OutletLM75.Value\"\n         },\n         \"Entity_OutletTemp\" : {\n             \"Id\" :  99 ,\n             \"Name\" :  \"OutletTemp\" ,\n             \"PowerState\" :  1 ,\n             \"Presence\" :  1 ,\n             \"Instance\" :  97\n         },\n         \"Connector_DemoCard\" : {\n             \"Bom\" :  \"14100513\" ,\n             \"Slot\" :  2 ,\n             \"Position\" :  4 ,\n             \"Presence\" :  1 ,\n             \"Id\" :  \"DemoCard\" ,\n             \"AuxId\" :  \"0\" ,\n             \"Buses\" : [\n                 \"I2c_9\"\n             ],\n             \"SystemId\" :  1 ,\n             \"ManagerId\" :  \"1\" ,\n             \"ChassisId\" :  \"1\" ,\n             \"IdentifyMode\" :  2\n         }\n     }\n }\n As a CSR file is added, you need to add the path of the  14100513_DemoCard_0.sr  file to  vpd\u002Fvendor\u002FHuawei\u002FServer\u002FKunpeng\u002FopenUBMC\u002Fprofile.txt . In this example, the configuration is as follows: Huawei\u002FServer\u002FKunpeng\u002FopenUBMC\u002FPSR\u002F14100513_DemoCard_0.sr\n PCA9546 can be configured as Pca9545. Note that  Objects > I2cMux_Pca9545_i2c9_chan0 needs to be configured  with  ChannelId . Configure  14100513_DemoCard_0.sr  as follows: {\n     \"FormatVersion\" :  \"3.00\" ,\n     \"DataVersion\" :  \"3.00\" ,\n     \"ManagementTopology\" : {\n         \"Anchor\" : {\n             \"Buses\" : [\n                 \"I2c_9\"\n              ]\n         },\n         \"I2c_9\" : {\n             \"Chips\" : [\n                 \"Pca9545_i2c9_chip\"\n             ]\n         },\n         \"Pca9545_i2c9_chip\" : {\n             \"Buses\" : [\n                 \"I2cMux_Pca9545_i2c9_chan0\"\n             ]\n         },\n         \"I2cMux_Pca9545_i2c9_chan0\" : {\n             \"Chips\" : [\n                 \"Lm75_3\"\n             ]\n         }\n     },\n     \"Objects\" : {\n         \"Pca9545_i2c9_chip\" : {\n             \"OffsetWidth\" :  0 ,\n             \"AddrWidth\" :  1 ,\n             \"Address\" :  224 ,\n             \"WriteTmout\" :  0 ,\n             \"ReadTmout\" :  0 ,\n             \"HealthStatus\" :  0\n         },\n         \"I2cMux_Pca9545_i2c9_chan0\" : {\n             \"ChannelId\" :  0\n         },\n         \"Lm75_3\" : {\n             \"OffsetWidth\" :  1 ,\n             \"AddrWidth\" :  1 ,\n             \"Address\" :  146\n         },\n         \"Scanner_NicLM75\" : {\n             \"Chip\" :  \"#\u002FLm75_3\" ,\n             \"Size\" :  1 ,\n             \"Offset\" :  0 ,\n             \"Mask\" :  255 ,\n             \"Period\" :  1000\n         },\n         \"ThresholdSensor_DemoTemp\" : {\n             \"AssertMask\" :  31381 ,\n             \"DeassertMask\" :  31381 ,\n             \"ReadingMask\" :  16191 ,\n             \"Linearization\" :  0 ,\n             \"M\" :  100 ,\n             \"RBExp\" :  224 ,\n             \"UpperNonrecoverable\" :  70 ,\n             \"UpperCritical\" :  65 ,\n             \"UpperNoncritical\" :  55 ,\n             \"LowerNonrecoverable\" :  0 ,\n             \"LowerCritical\" :  5 ,\n             \"LowerNoncritical\" :  10 ,\n             \"PositiveHysteresis\" :  2 ,\n             \"NegativeHysteresis\" :  2 ,\n             \"OwnerId\" :  32 ,\n             \"OwnerLun\" :  0 ,\n             \"EntityId\" :  \"\u003C=\u002FEntity_NicTemp.Id\" ,\n             \"EntityInstance\" :  \"\u003C=\u002FEntity_NicTemp.Instance\" ,\n             \"Initialization\" :  127 ,\n             \"Capabilities\" :  104 ,\n             \"SensorType\" :  1 ,\n             \"ReadingType\" :  1 ,\n             \"SensorName\" :  \"Nic_Temp\" ,\n             \"Unit\" :  128 ,\n             \"BaseUnit\" :  1 ,\n             \"ModifierUnit\" :  0 ,\n             \"Analog\" :  1 ,\n             \"MaximumReading\" :  127 ,\n             \"MinimumReading\" :  128 ,\n             \"Reading\" :  \"\u003C=\u002FScanner_NicLM75.Value\"\n         },\n         \"Entity_NicTemp\" : {\n             \"Id\" :  9 ,\n             \"Name\" :  \"Nic_Temp\" ,\n             \"PowerState\" :  1 ,\n             \"Presence\" :  1 ,\n             \"Instance\" :  98\n         }\n     }\n }\n Sensor WebUI After the preceding configurations are complete, the sensor WebUI is properly displayed. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",[17],{"_path":4190,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":4191,"description":4192,"date":4193,"category":13,"author":4194,"body":4198,"_type":4181,"_id":4418,"_source":4183,"_file":4419,"_stem":4420,"_extension":4186,"coverImage":4237,"plainText":4421,"authorNames":4422},"\u002Fen\u002Fblogs\u002F20250815","Business Practice | PowerLeader Computer's Smart UART HMI Based on openUBMC","This article explores how PowerLeader Computer System Co., Ltd. successfully implemented an in-house developed Human-Machine Interface (HMI) solution leveraging the openUBMC framework. You will know the technical architecture, design principles, and implementation strategies behind PowerLeader's smart UART HMI. As a critical component within the openUBMC ecosystem, this solution demonstrates advanced engineering practices and serves as a practical guide for developers.","2025\u002F08\u002F15",[4195],{"name":4196,"description":4197},"邱豪","System engineer and BMC R&D director at PowerLeader, who has been deeply engaged in the design and development of openUBMC projects.",{"type":20,"children":4199,"toc":4408},[4200,4205,4209,4215,4221,4226,4231,4239,4244,4251,4256,4261,4268,4273,4280,4285,4292,4298,4303,4310,4316,4321,4328,4334,4339,4344,4351,4357,4362,4369,4375,4380,4386,4397],{"type":23,"tag":24,"props":4201,"children":4203},{"id":4202},"business-practice-powerleader-computers-smart-uart-hmi-based-on-openubmc",[4204],{"type":29,"value":4191},{"type":23,"tag":37,"props":4206,"children":4207},{},[4208],{"type":29,"value":4192},{"type":23,"tag":4161,"props":4210,"children":4212},{"id":4211},"smart-uart-hmi",[4213],{"type":29,"value":4214},"Smart UART HMI",{"type":23,"tag":4161,"props":4216,"children":4218},{"id":4217},"targeting-latency-critical-edge-computing",[4219],{"type":29,"value":4220},"Targeting Latency-Critical Edge Computing",{"type":23,"tag":37,"props":4222,"children":4223},{},[4224],{"type":29,"value":4225},"A smart UART HMI provides a lightweight and highly reliable local management portal for server BMCs. It is especially effective in latency-critical edge computing scenarios.",{"type":23,"tag":37,"props":4227,"children":4228},{},[4229],{"type":29,"value":4230},"As server applications expand into domains like edge computing, legacy remote management systems such as Intelligent Platform Management Interfaces (IPMIs) and web interfaces fall short in meeting rapid troubleshooting needs. On-site visual monitoring is essential when network connections fail or remote management tools become unavailable. It allows administrators to perform emergency operations directly through a local display interface, thereby improving overall system resilience.",{"type":23,"tag":37,"props":4232,"children":4233},{},[4234],{"type":23,"tag":129,"props":4235,"children":4238},{"alt":4236,"src":4237},"images","\u002Fcategory\u002Fblog\u002F20250815\u002Fimg01.webp",[],{"type":23,"tag":37,"props":4240,"children":4241},{},[4242],{"type":29,"value":4243},"In addition, edge computing nodes are deployed in remote or physically isolated environments. A local monitoring display minimizes reliance on remote management systems and shortens response time for troubleshooting. Local, instant visual alerting is essential for mitigating the risk of system outages, particularly during hardware faults such as fan failures or overheating where remote management latency is a concern.",{"type":23,"tag":37,"props":4245,"children":4246},{},[4247],{"type":23,"tag":129,"props":4248,"children":4250},{"alt":4236,"src":4249},"\u002Fcategory\u002Fblog\u002F20250815\u002Fimg02.webp",[],{"type":23,"tag":37,"props":4252,"children":4253},{},[4254],{"type":29,"value":4255},"The power-efficient design of the smart UART HMI outperforms conventional display terminals, effectively reducing long-term O&M costs. The smart UART HMI offers a cost-effective hardware solution with seamless integration capabilities, making it ideal for mass production scenarios.",{"type":23,"tag":37,"props":4257,"children":4258},{},[4259],{"type":29,"value":4260},"The smart UART HMI supports local control capabilities, allowing users to directly manage the server's BMC via the touchscreen, such as restarting the server, adjusting fan policies, or switching power modes. On-site O&M flexibility is thus significantly enhanced.",{"type":23,"tag":37,"props":4262,"children":4263},{},[4264],{"type":23,"tag":129,"props":4265,"children":4267},{"alt":4236,"src":4266},"\u002Fcategory\u002Fblog\u002F20250815\u002Fimg03.webp",[],{"type":23,"tag":37,"props":4269,"children":4270},{},[4271],{"type":29,"value":4272},"In scenarios with unstable network connections, administrators can leverage the smart UART HMI to access BMC or system logs and back up logs in real-time, enabling efficient troubleshooting and post-incident analysis.",{"type":23,"tag":37,"props":4274,"children":4275},{},[4276],{"type":23,"tag":129,"props":4277,"children":4279},{"alt":4236,"src":4278},"\u002Fcategory\u002Fblog\u002F20250815\u002Fimg04.webp",[],{"type":23,"tag":37,"props":4281,"children":4282},{},[4283],{"type":29,"value":4284},"PowerLeader's smart UART HMI integrates core modules to offer comprehensive monitoring and control capabilities, such as serial port redirection, log backup, device management, real-time system status monitoring, and alert supervision. The implementation of the smart UART HMI has significantly enhanced the real-time responsiveness, operational efficiency, and intelligent capabilities. Maintenance teams in manufacturing and data center environments now benefit from faster, smarter, and more responsive server management.",{"type":23,"tag":37,"props":4286,"children":4287},{},[4288],{"type":23,"tag":129,"props":4289,"children":4291},{"alt":4236,"src":4290},"\u002Fcategory\u002Fblog\u002F20250815\u002Fimg05.webp",[],{"type":23,"tag":4161,"props":4293,"children":4295},{"id":4294},"implementation-of-the-smart-uart-hmi",[4296],{"type":29,"value":4297},"Implementation of the Smart UART HMI",{"type":23,"tag":37,"props":4299,"children":4300},{},[4301],{"type":29,"value":4302},"As a typical component in BMC management systems, the smart UART HMI requires the integration of cross-domain technical capabilities, including BMC software development, hardware design, underlying protocols (such as I2C and serial), and terminal desktop application development.",{"type":23,"tag":37,"props":4304,"children":4305},{},[4306],{"type":23,"tag":129,"props":4307,"children":4309},{"alt":4236,"src":4308},"\u002Fcategory\u002Fblog\u002F20250815\u002Fimg06.webp",[],{"type":23,"tag":4161,"props":4311,"children":4313},{"id":4312},"hardware-design",[4314],{"type":29,"value":4315},"Hardware Design",{"type":23,"tag":37,"props":4317,"children":4318},{},[4319],{"type":29,"value":4320},"By redesigning the BMC's low-speed bus interface, a set of I2C lines is routed to the chassis exterior, enabling direct communication between the BMC and the smart UART HMI. In addition, the smart UART HMI is mounted onto the chassis using snap-in mechanisms. You can detach or change it when needed. By integrating an I2C-to-serial conversion module on the expansion board, the system emulates specific serial protocols over I2C to enable communication between the BMC and the smart UART HMI.",{"type":23,"tag":37,"props":4322,"children":4323},{},[4324],{"type":23,"tag":129,"props":4325,"children":4327},{"alt":4236,"src":4326},"\u002Fcategory\u002Fblog\u002F20250815\u002Fimg07.webp",[],{"type":23,"tag":4161,"props":4329,"children":4331},{"id":4330},"software-design",[4332],{"type":29,"value":4333},"Software Design",{"type":23,"tag":37,"props":4335,"children":4336},{},[4337],{"type":29,"value":4338},"The openUBMC component is introduced to implement the functions of the smart UART HMI. By leveraging the resource collaboration interface of openUBMC, PowerLeader's smart UART HMI components can easily obtain the asset information, network information, and system event logs (SELs) of the server, and send the information to the smart UART HMI via the serial port. The openUBMC component framework monitors and polls the overall server status, component status, and temperature data. It accurately transmits the server's health information to the smart UART HMI, enabling visual alerting.",{"type":23,"tag":37,"props":4340,"children":4341},{},[4342],{"type":29,"value":4343},"Serial commands issued by the smart UART HMI are routed to this component, which parses the incoming instructions and maps them to corresponding resource coordination interface methods. This enables interactive control operations such as system power on\u002Foff, BMC reboot, and fan mode configuration.",{"type":23,"tag":37,"props":4345,"children":4346},{},[4347],{"type":23,"tag":129,"props":4348,"children":4350},{"alt":4236,"src":4349},"\u002Fcategory\u002Fblog\u002F20250815\u002Fimg08.webp",[],{"type":23,"tag":4161,"props":4352,"children":4354},{"id":4353},"serial-port-redirection",[4355],{"type":29,"value":4356},"Serial Port Redirection",{"type":23,"tag":37,"props":4358,"children":4359},{},[4360],{"type":29,"value":4361},"The PowerLeader's smart UART HMI supports serial port redirection. BMC serial port logs are transmitted to the smart UART HMI, significantly enhancing real-time on-site O&M efficiency by accelerating fault diagnosis processes. Building on this technical foundation, this innovative mechanism is designed to periodically back up serial log data, delivering \"black box\" reliability for server diagnostics and data protection. This function ensures critical operational data persistence even under critical failure scenarios like power outages or network disruptions. The following describes how to implement the logic process of serial port redirection. This is used as a technical reference for developer community members.",{"type":23,"tag":37,"props":4363,"children":4364},{},[4365],{"type":23,"tag":129,"props":4366,"children":4368},{"alt":4236,"src":4367},"\u002Fcategory\u002Fblog\u002F20250815\u002Fimg09.webp",[],{"type":23,"tag":4161,"props":4370,"children":4372},{"id":4371},"wrap-up",[4373],{"type":29,"value":4374},"Wrap-up",{"type":23,"tag":37,"props":4376,"children":4377},{},[4378],{"type":29,"value":4379},"PowerLeader Computing is an active contributor to the openUBMC community, leveraging its proprietary component to rapidly implement innovative designs that showcase the true potential of openUBMC's open-source ecosystem. PowerLeader Computing is committed to actively sharing industry best practices within the developer community, fostering collaborative growth alongside fellow developers. We aim to drive innovation in the BMC domain by collaborating with a growing number of community developers, working together to advance the openUBMC ecosystem.",{"type":23,"tag":4161,"props":4381,"children":4383},{"id":4382},"follow-openubmc",[4384],{"type":29,"value":4385},"Follow openUBMC",{"type":23,"tag":37,"props":4387,"children":4388},{},[4389,4391],{"type":29,"value":4390},"Community official website: ",{"type":23,"tag":43,"props":4392,"children":4395},{"href":4393,"rel":4394},"https:\u002F\u002Fwww.openubmc.cn",[47],[4396],{"type":29,"value":4393},{"type":23,"tag":37,"props":4398,"children":4399},{},[4400,4402],{"type":29,"value":4401},"Code repository address: ",{"type":23,"tag":43,"props":4403,"children":4406},{"href":4404,"rel":4405},"https:\u002F\u002Fgitcode.com\u002FopenUBMC\u002Fnetwork_adapter",[47],[4407],{"type":29,"value":4404},{"title":9,"searchDepth":392,"depth":392,"links":4409},[4410,4411,4412,4413,4414,4415,4416,4417],{"id":4211,"depth":364,"text":4214},{"id":4217,"depth":364,"text":4220},{"id":4294,"depth":364,"text":4297},{"id":4312,"depth":364,"text":4315},{"id":4330,"depth":364,"text":4333},{"id":4353,"depth":364,"text":4356},{"id":4371,"depth":364,"text":4374},{"id":4382,"depth":364,"text":4385},"content:en:blogs:20250815.md","en\u002Fblogs\u002F20250815.md","en\u002Fblogs\u002F20250815","Business Practice | PowerLeader Computer's Smart UART HMI Based on openUBMC This article explores how PowerLeader Computer System Co., Ltd. successfully implemented an in-house developed Human-Machine Interface (HMI) solution leveraging the openUBMC framework. You will know the technical architecture, design principles, and implementation strategies behind PowerLeader's smart UART HMI. As a critical component within the openUBMC ecosystem, this solution demonstrates advanced engineering practices and serves as a practical guide for developers. Smart UART HMI Targeting Latency-Critical Edge Computing A smart UART HMI provides a lightweight and highly reliable local management portal for server BMCs. It is especially effective in latency-critical edge computing scenarios. As server applications expand into domains like edge computing, legacy remote management systems such as Intelligent Platform Management Interfaces (IPMIs) and web interfaces fall short in meeting rapid troubleshooting needs. On-site visual monitoring is essential when network connections fail or remote management tools become unavailable. It allows administrators to perform emergency operations directly through a local display interface, thereby improving overall system resilience.  In addition, edge computing nodes are deployed in remote or physically isolated environments. A local monitoring display minimizes reliance on remote management systems and shortens response time for troubleshooting. Local, instant visual alerting is essential for mitigating the risk of system outages, particularly during hardware faults such as fan failures or overheating where remote management latency is a concern.  The power-efficient design of the smart UART HMI outperforms conventional display terminals, effectively reducing long-term O&M costs. The smart UART HMI offers a cost-effective hardware solution with seamless integration capabilities, making it ideal for mass production scenarios. The smart UART HMI supports local control capabilities, allowing users to directly manage the server's BMC via the touchscreen, such as restarting the server, adjusting fan policies, or switching power modes. On-site O&M flexibility is thus significantly enhanced.  In scenarios with unstable network connections, administrators can leverage the smart UART HMI to access BMC or system logs and back up logs in real-time, enabling efficient troubleshooting and post-incident analysis.  PowerLeader's smart UART HMI integrates core modules to offer comprehensive monitoring and control capabilities, such as serial port redirection, log backup, device management, real-time system status monitoring, and alert supervision. The implementation of the smart UART HMI has significantly enhanced the real-time responsiveness, operational efficiency, and intelligent capabilities. Maintenance teams in manufacturing and data center environments now benefit from faster, smarter, and more responsive server management.  Implementation of the Smart UART HMI As a typical component in BMC management systems, the smart UART HMI requires the integration of cross-domain technical capabilities, including BMC software development, hardware design, underlying protocols (such as I2C and serial), and terminal desktop application development.  Hardware Design By redesigning the BMC's low-speed bus interface, a set of I2C lines is routed to the chassis exterior, enabling direct communication between the BMC and the smart UART HMI. In addition, the smart UART HMI is mounted onto the chassis using snap-in mechanisms. You can detach or change it when needed. By integrating an I2C-to-serial conversion module on the expansion board, the system emulates specific serial protocols over I2C to enable communication between the BMC and the smart UART HMI.  Software Design The openUBMC component is introduced to implement the functions of the smart UART HMI. By leveraging the resource collaboration interface of openUBMC, PowerLeader's smart UART HMI components can easily obtain the asset information, network information, and system event logs (SELs) of the server, and send the information to the smart UART HMI via the serial port. The openUBMC component framework monitors and polls the overall server status, component status, and temperature data. It accurately transmits the server's health information to the smart UART HMI, enabling visual alerting. Serial commands issued by the smart UART HMI are routed to this component, which parses the incoming instructions and maps them to corresponding resource coordination interface methods. This enables interactive control operations such as system power on\u002Foff, BMC reboot, and fan mode configuration.  Serial Port Redirection The PowerLeader's smart UART HMI supports serial port redirection. BMC serial port logs are transmitted to the smart UART HMI, significantly enhancing real-time on-site O&M efficiency by accelerating fault diagnosis processes. Building on this technical foundation, this innovative mechanism is designed to periodically back up serial log data, delivering \"black box\" reliability for server diagnostics and data protection. This function ensures critical operational data persistence even under critical failure scenarios like power outages or network disruptions. The following describes how to implement the logic process of serial port redirection. This is used as a technical reference for developer community members.  Wrap-up PowerLeader Computing is an active contributor to the openUBMC community, leveraging its proprietary component to rapidly implement innovative designs that showcase the true potential of openUBMC's open-source ecosystem. PowerLeader Computing is committed to actively sharing industry best practices within the developer community, fostering collaborative growth alongside fellow developers. We aim to drive innovation in the BMC domain by collaborating with a growing number of community developers, working together to advance the openUBMC ecosystem. Follow openUBMC Community official website:  https:\u002F\u002Fwww.openubmc.cn Code repository address:  https:\u002F\u002Fgitcode.com\u002FopenUBMC\u002Fnetwork_adapter",[4196],{"_path":4424,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":4425,"description":4426,"date":4427,"category":13,"archives":14,"author":4428,"body":4432,"_type":4181,"_id":12875,"_source":4183,"_file":12876,"_stem":12877,"_extension":4186,"plainText":12878,"authorNames":12879},"\u002Fen\u002Fblogs\u002Fpki-cert-service-guide","PKI Practice: Building a Complete Certificate Service System (openubmc.cn)","This tutorial provides a hands-on guide based on EJBCA, designed to compliance the CA\u002FRA workflow in a demo environment. It walks through key operational steps including certificate profile creation, end entity profile configuration, approval process activation, and RA certificate issuance and download. This tutorial focuses on practical execution, making it ideal for experiments, proof-of-concept (PoC) setups, or internal demonstrations. Please note that this tutorial does not cover production-level security hardening or compliance requirements.","2025\u002F08\u002F11",[4429],{"name":4430,"description":4431},"沈威","Active openUBMC community developer, who is eager to explore and share new ideas on BMC and open source firmware.",{"type":20,"children":4433,"toc":12780},[4434,4439,4445,4449,4460,4464,4470,4493,4496,4502,4515,4518,4524,4529,4536,4549,4556,4561,4612,4617,4658,4664,4740,4753,4759,4800,4805,4848,4854,4904,4913,4919,4928,5003,5019,5428,5436,5478,5486,5492,5500,5524,5530,5535,5541,5557,5918,5951,5959,5965,6037,6040,6046,6052,6071,6077,6083,6110,6116,6154,6160,6273,6279,6336,6349,6355,6470,6475,6481,6487,6675,6678,6684,6830,6833,6839,7095,7098,7104,7402,7405,7411,7526,7529,7535,7645,7648,7654,7712,7715,7721,7732,7740,7745,7938,7946,7951,7995,8000,8012,8018,8023,8160,8163,8168,8269,8272,8277,8471,8474,8479,8691,8694,8700,8784,8787,8793,8805,8889,8892,8898,8908,8913,8972,8977,8980,8986,8992,9182,9188,9398,9403,9409,9483,9489,9651,9657,9680,9686,9691,9710,9713,9719,9724,9727,9733,9929,9932,9938,10142,10152,10155,10161,10239,10242,10248,10399,10405,10854,10860,10938,10944,11020,11023,11029,11075,11078,11084,11130,11133,11139,11200,11203,11209,11292,11295,11301,11373,11376,11381,11389,11392,11398,11404,11444,11450,11536,11542,11664,11670,11678,11701,11718,11726,11747,11757,11763,11781,11787,11810,11816,11828,11834,11852,11858,11883,11891,11924,11932,11950,11958,11976,11982,11994,12002,12074,12085,12098,12106,12124,12134,12146,12170,12176,12249,12255,12298,12304,12435,12441,12498,12501,12507,12532,12538,12565,12571,12650,12656,12664,12696,12702,12722,12728,12776],{"type":23,"tag":24,"props":4435,"children":4437},{"id":4436},"pki-practice-building-a-complete-certificate-service-system-openubmccn",[4438],{"type":29,"value":4425},{"type":23,"tag":4161,"props":4440,"children":4442},{"id":4441},"_1-introduction",[4443],{"type":29,"value":4444},"1. Introduction",{"type":23,"tag":37,"props":4446,"children":4447},{},[4448],{"type":29,"value":4426},{"type":23,"tag":37,"props":4450,"children":4451},{},[4452,4458],{"type":23,"tag":4453,"props":4454,"children":4455},"strong",{},[4456],{"type":29,"value":4457},"Objective",{"type":29,"value":4459},": Master the core operations of EJBCA and complete the entire process from template configuration to certificate issuance.",{"type":23,"tag":4461,"props":4462,"children":4463},"hr",{},[],{"type":23,"tag":4161,"props":4465,"children":4467},{"id":4466},"_2-terms",[4468],{"type":29,"value":4469},"2. Terms",{"type":23,"tag":60,"props":4471,"children":4472},{},[4473,4483],{"type":23,"tag":64,"props":4474,"children":4475},{},[4476,4481],{"type":23,"tag":4453,"props":4477,"children":4478},{},[4479],{"type":29,"value":4480},"RA",{"type":29,"value":4482},": registers end entities and reviews their identities.",{"type":23,"tag":64,"props":4484,"children":4485},{},[4486,4491],{"type":23,"tag":4453,"props":4487,"children":4488},{},[4489],{"type":29,"value":4490},"Certificate profile",{"type":29,"value":4492},": presets key usages, SANs, and validity periods.",{"type":23,"tag":4461,"props":4494,"children":4495},{},[],{"type":23,"tag":4161,"props":4497,"children":4499},{"id":4498},"_3-experiment-environment-and-prerequisites",[4500],{"type":29,"value":4501},"3. Experiment Environment and Prerequisites",{"type":23,"tag":60,"props":4503,"children":4504},{},[4505,4510],{"type":23,"tag":64,"props":4506,"children":4507},{},[4508],{"type":29,"value":4509},"OS: Ubuntu 20.04 Server (installed offline)",{"type":23,"tag":64,"props":4511,"children":4512},{},[4513],{"type":29,"value":4514},"Software to be preset: Docker and docker-compose (apt package)",{"type":23,"tag":4461,"props":4516,"children":4517},{},[],{"type":23,"tag":4161,"props":4519,"children":4521},{"id":4520},"_4-ejbca-docker-deployment-and-persistence",[4522],{"type":29,"value":4523},"4. EJBCA Docker Deployment and Persistence",{"type":23,"tag":37,"props":4525,"children":4526},{},[4527],{"type":29,"value":4528},"This chapter explains how to deploy the EJBCA certificate service using Docker, with a focus on ensuring persistent data storage on a dedicated drive. This setup helps prevent data loss in the event of container or virtual machine restarts. Key topics cover configuring data persistence of the internal database (H2 by default), running containers using docke-compose, and setting up remote access through appropriate configuration parameters.",{"type":23,"tag":4530,"props":4531,"children":4533},"h3",{"id":4532},"_41-environment-setup-and-proxy-configuration",[4534],{"type":29,"value":4535},"4.1 Environment Setup and Proxy Configuration",{"type":23,"tag":37,"props":4537,"children":4538},{},[4539,4541,4547],{"type":29,"value":4540},"Some EJBCA Docker images (such as ",{"type":23,"tag":140,"props":4542,"children":4544},{"className":4543},[],[4545],{"type":29,"value":4546},"keyfactor\u002Fejbca-ce",{"type":29,"value":4548},") need to be pulled from the public network. To ensure environment availability, configure the HTTP\u002FHTTPS proxy of Docker Daemon.",{"type":23,"tag":4550,"props":4551,"children":4553},"h4",{"id":4552},"step-1-configure-the-systemd-proxy",[4554],{"type":29,"value":4555},"Step 1 Configure the systemd proxy.",{"type":23,"tag":37,"props":4557,"children":4558},{},[4559],{"type":29,"value":4560},"Docker Daemon runs under the systemd management. You need to add the following configurations to inherit the system proxy.",{"type":23,"tag":341,"props":4562,"children":4566},{"code":4563,"language":4564,"meta":9,"className":4565,"style":9},"sudo mkdir -p \u002Fetc\u002Fsystemd\u002Fsystem\u002Fdocker.service.d\nsudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fdocker.service.d\u002Fhttp-proxy.conf\n","bash","language-bash shiki shiki-themes github-light github-dark monokai",[4567],{"type":23,"tag":140,"props":4568,"children":4569},{"__ignoreMap":9},[4570,4595],{"type":23,"tag":351,"props":4571,"children":4572},{"class":353,"line":354},[4573,4579,4585,4590],{"type":23,"tag":351,"props":4574,"children":4576},{"style":4575},"--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E",[4577],{"type":29,"value":4578},"sudo",{"type":23,"tag":351,"props":4580,"children":4582},{"style":4581},"--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74",[4583],{"type":29,"value":4584}," mkdir",{"type":23,"tag":351,"props":4586,"children":4587},{"style":696},[4588],{"type":29,"value":4589}," -p",{"type":23,"tag":351,"props":4591,"children":4592},{"style":4581},[4593],{"type":29,"value":4594}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fdocker.service.d\n",{"type":23,"tag":351,"props":4596,"children":4597},{"class":353,"line":364},[4598,4602,4607],{"type":23,"tag":351,"props":4599,"children":4600},{"style":4575},[4601],{"type":29,"value":4578},{"type":23,"tag":351,"props":4603,"children":4604},{"style":4581},[4605],{"type":29,"value":4606}," nano",{"type":23,"tag":351,"props":4608,"children":4609},{"style":4581},[4610],{"type":29,"value":4611}," \u002Fetc\u002Fsystemd\u002Fsystem\u002Fdocker.service.d\u002Fhttp-proxy.conf\n",{"type":23,"tag":37,"props":4613,"children":4614},{},[4615],{"type":29,"value":4616},"Content:",{"type":23,"tag":341,"props":4618,"children":4622},{"code":4619,"language":4620,"meta":9,"className":4621,"style":9},"[Service]\nEnvironment=\"HTTP_PROXY=http:\u002F\u002F192.168.xxx.xxx:7890\"\nEnvironment=\"HTTPS_PROXY=http:\u002F\u002F192.168.xxx.xxx:7890\"\nEnvironment=\"NO_PROXY=127.0.0.1,localhost,192.168.13.119\" \u002F\u002F Change the IP address to the host IP address of your virtual machine.\n","ini","language-ini shiki shiki-themes github-light github-dark monokai",[4623],{"type":23,"tag":140,"props":4624,"children":4625},{"__ignoreMap":9},[4626,4634,4642,4650],{"type":23,"tag":351,"props":4627,"children":4628},{"class":353,"line":354},[4629],{"type":23,"tag":351,"props":4630,"children":4631},{},[4632],{"type":29,"value":4633},"[Service]\n",{"type":23,"tag":351,"props":4635,"children":4636},{"class":353,"line":364},[4637],{"type":23,"tag":351,"props":4638,"children":4639},{},[4640],{"type":29,"value":4641},"Environment=\"HTTP_PROXY=http:\u002F\u002F192.168.xxx.xxx:7890\"\n",{"type":23,"tag":351,"props":4643,"children":4644},{"class":353,"line":379},[4645],{"type":23,"tag":351,"props":4646,"children":4647},{},[4648],{"type":29,"value":4649},"Environment=\"HTTPS_PROXY=http:\u002F\u002F192.168.xxx.xxx:7890\"\n",{"type":23,"tag":351,"props":4651,"children":4652},{"class":353,"line":392},[4653],{"type":23,"tag":351,"props":4654,"children":4655},{},[4656],{"type":29,"value":4657},"Environment=\"NO_PROXY=127.0.0.1,localhost,192.168.13.119\" \u002F\u002F Change the IP address to the host IP address of your virtual machine.\n",{"type":23,"tag":4550,"props":4659,"children":4661},{"id":4660},"step-2-reload-and-restart-docker",[4662],{"type":29,"value":4663},"Step 2 Reload and restart Docker.",{"type":23,"tag":341,"props":4665,"children":4667},{"code":4666,"language":4564,"meta":9,"className":4565,"style":9},"sudo systemctl daemon-reload\nsudo systemctl restart docker\nsudo systemctl status docker --no-pager -l\n",[4668],{"type":23,"tag":140,"props":4669,"children":4670},{"__ignoreMap":9},[4671,4688,4709],{"type":23,"tag":351,"props":4672,"children":4673},{"class":353,"line":354},[4674,4678,4683],{"type":23,"tag":351,"props":4675,"children":4676},{"style":4575},[4677],{"type":29,"value":4578},{"type":23,"tag":351,"props":4679,"children":4680},{"style":4581},[4681],{"type":29,"value":4682}," systemctl",{"type":23,"tag":351,"props":4684,"children":4685},{"style":4581},[4686],{"type":29,"value":4687}," daemon-reload\n",{"type":23,"tag":351,"props":4689,"children":4690},{"class":353,"line":364},[4691,4695,4699,4704],{"type":23,"tag":351,"props":4692,"children":4693},{"style":4575},[4694],{"type":29,"value":4578},{"type":23,"tag":351,"props":4696,"children":4697},{"style":4581},[4698],{"type":29,"value":4682},{"type":23,"tag":351,"props":4700,"children":4701},{"style":4581},[4702],{"type":29,"value":4703}," restart",{"type":23,"tag":351,"props":4705,"children":4706},{"style":4581},[4707],{"type":29,"value":4708}," docker\n",{"type":23,"tag":351,"props":4710,"children":4711},{"class":353,"line":379},[4712,4716,4720,4725,4730,4735],{"type":23,"tag":351,"props":4713,"children":4714},{"style":4575},[4715],{"type":29,"value":4578},{"type":23,"tag":351,"props":4717,"children":4718},{"style":4581},[4719],{"type":29,"value":4682},{"type":23,"tag":351,"props":4721,"children":4722},{"style":4581},[4723],{"type":29,"value":4724}," status",{"type":23,"tag":351,"props":4726,"children":4727},{"style":4581},[4728],{"type":29,"value":4729}," docker",{"type":23,"tag":351,"props":4731,"children":4732},{"style":696},[4733],{"type":29,"value":4734}," --no-pager",{"type":23,"tag":351,"props":4736,"children":4737},{"style":696},[4738],{"type":29,"value":4739}," -l\n",{"type":23,"tag":37,"props":4741,"children":4742},{},[4743,4745,4751],{"type":29,"value":4744},"If the output contains ",{"type":23,"tag":140,"props":4746,"children":4748},{"className":4747},[],[4749],{"type":29,"value":4750},"Active: active (running)",{"type":29,"value":4752},", the proxy configuration takes effect.",{"type":23,"tag":4550,"props":4754,"children":4756},{"id":4755},"step-3-check-whether-the-proxy-has-taken-effect",[4757],{"type":29,"value":4758},"Step 3 Check whether the proxy has taken effect.",{"type":23,"tag":341,"props":4760,"children":4762},{"code":4761,"language":4564,"meta":9,"className":4565,"style":9},"docker info | grep -i proxy\n",[4763],{"type":23,"tag":140,"props":4764,"children":4765},{"__ignoreMap":9},[4766],{"type":23,"tag":351,"props":4767,"children":4768},{"class":353,"line":354},[4769,4774,4779,4785,4790,4795],{"type":23,"tag":351,"props":4770,"children":4771},{"style":4575},[4772],{"type":29,"value":4773},"docker",{"type":23,"tag":351,"props":4775,"children":4776},{"style":4581},[4777],{"type":29,"value":4778}," info",{"type":23,"tag":351,"props":4780,"children":4782},{"style":4781},"--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672",[4783],{"type":29,"value":4784}," |",{"type":23,"tag":351,"props":4786,"children":4787},{"style":4575},[4788],{"type":29,"value":4789}," grep",{"type":23,"tag":351,"props":4791,"children":4792},{"style":696},[4793],{"type":29,"value":4794}," -i",{"type":23,"tag":351,"props":4796,"children":4797},{"style":4581},[4798],{"type":29,"value":4799}," proxy\n",{"type":23,"tag":37,"props":4801,"children":4802},{},[4803],{"type":29,"value":4804},"If the following information is displayed, the proxy has taken effect:",{"type":23,"tag":341,"props":4806,"children":4810},{"code":4807,"language":4808,"meta":9,"className":4809,"style":9},"HTTP Proxy: http:\u002F\u002F192.168.xxx.xxx:7890\nHTTPS Proxy: http:\u002F\u002F192.168.xxx.xxx:7890\n","shell","language-shell shiki shiki-themes github-light github-dark monokai",[4811],{"type":23,"tag":140,"props":4812,"children":4813},{"__ignoreMap":9},[4814,4832],{"type":23,"tag":351,"props":4815,"children":4816},{"class":353,"line":354},[4817,4822,4827],{"type":23,"tag":351,"props":4818,"children":4819},{"style":4575},[4820],{"type":29,"value":4821},"HTTP",{"type":23,"tag":351,"props":4823,"children":4824},{"style":4581},[4825],{"type":29,"value":4826}," Proxy:",{"type":23,"tag":351,"props":4828,"children":4829},{"style":4581},[4830],{"type":29,"value":4831}," http:\u002F\u002F192.168.xxx.xxx:7890\n",{"type":23,"tag":351,"props":4833,"children":4834},{"class":353,"line":364},[4835,4840,4844],{"type":23,"tag":351,"props":4836,"children":4837},{"style":4575},[4838],{"type":29,"value":4839},"HTTPS",{"type":23,"tag":351,"props":4841,"children":4842},{"style":4581},[4843],{"type":29,"value":4826},{"type":23,"tag":351,"props":4845,"children":4846},{"style":4581},[4847],{"type":29,"value":4831},{"type":23,"tag":4530,"props":4849,"children":4851},{"id":4850},"_42-data-persistence-configuration",[4852],{"type":29,"value":4853},"4.2 Data Persistence Configuration",{"type":23,"tag":60,"props":4855,"children":4856},{},[4857,4869,4880,4893],{"type":23,"tag":64,"props":4858,"children":4859},{},[4860,4862,4868],{"type":29,"value":4861},"Save the H2 database in files, and set the database as follows: ",{"type":23,"tag":140,"props":4863,"children":4865},{"className":4864},[],[4866],{"type":29,"value":4867},"jdbc:h2:\u002Fmnt\u002Fpersistent\u002Fejbcadb;DB_CLOSE_DELAY=-1",{"type":29,"value":52},{"type":23,"tag":64,"props":4870,"children":4871},{},[4872,4874],{"type":29,"value":4873},"Host mount path: ",{"type":23,"tag":140,"props":4875,"children":4877},{"className":4876},[],[4878],{"type":29,"value":4879},"\u002Fopt\u002Fejbca-data:\u002Fmnt\u002Fpersistent",{"type":23,"tag":64,"props":4881,"children":4882},{},[4883,4885,4891],{"type":29,"value":4884},"Do not use ",{"type":23,"tag":140,"props":4886,"children":4888},{"className":4887},[],[4889],{"type":29,"value":4890},"--rm",{"type":29,"value":4892}," to start the container.",{"type":23,"tag":64,"props":4894,"children":4895},{},[4896,4898],{"type":29,"value":4897},"Set the host permission: ",{"type":23,"tag":140,"props":4899,"children":4901},{"className":4900},[],[4902],{"type":29,"value":4903},"chown -R 10001:10001 \u002Fopt\u002Fejbca-data",{"type":23,"tag":4905,"props":4906,"children":4907},"blockquote",{},[4908],{"type":23,"tag":37,"props":4909,"children":4910},{},[4911],{"type":29,"value":4912},"📌 Note: In a formal environment, it is recommended to use external database, such as PostgreSQL or MySQL, to improve system reliability and disaster recovery capabilities.",{"type":23,"tag":4530,"props":4914,"children":4916},{"id":4915},"deployment-using-docker-compose",[4917],{"type":29,"value":4918},"Deployment Using Docker Compose",{"type":23,"tag":4920,"props":4921,"children":4922},"ol",{},[4923],{"type":23,"tag":64,"props":4924,"children":4925},{},[4926],{"type":29,"value":4927},"Create a directory structure.",{"type":23,"tag":341,"props":4929,"children":4931},{"code":4930,"language":4564,"meta":9,"className":4565,"style":9},"mkdir -p \u002Fopt\u002Fejbca-compose\ncd \u002Fopt\u002Fejbca-compose\nmkdir -p \u002Fopt\u002Fejbca-data\nchown -R 10001:10001 \u002Fopt\u002Fejbca-data\n",[4932],{"type":23,"tag":140,"props":4933,"children":4934},{"__ignoreMap":9},[4935,4952,4965,4981],{"type":23,"tag":351,"props":4936,"children":4937},{"class":353,"line":354},[4938,4943,4947],{"type":23,"tag":351,"props":4939,"children":4940},{"style":4575},[4941],{"type":29,"value":4942},"mkdir",{"type":23,"tag":351,"props":4944,"children":4945},{"style":696},[4946],{"type":29,"value":4589},{"type":23,"tag":351,"props":4948,"children":4949},{"style":4581},[4950],{"type":29,"value":4951}," \u002Fopt\u002Fejbca-compose\n",{"type":23,"tag":351,"props":4953,"children":4954},{"class":353,"line":364},[4955,4961],{"type":23,"tag":351,"props":4956,"children":4958},{"style":4957},"--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF",[4959],{"type":29,"value":4960},"cd",{"type":23,"tag":351,"props":4962,"children":4963},{"style":4581},[4964],{"type":29,"value":4951},{"type":23,"tag":351,"props":4966,"children":4967},{"class":353,"line":379},[4968,4972,4976],{"type":23,"tag":351,"props":4969,"children":4970},{"style":4575},[4971],{"type":29,"value":4942},{"type":23,"tag":351,"props":4973,"children":4974},{"style":696},[4975],{"type":29,"value":4589},{"type":23,"tag":351,"props":4977,"children":4978},{"style":4581},[4979],{"type":29,"value":4980}," \u002Fopt\u002Fejbca-data\n",{"type":23,"tag":351,"props":4982,"children":4983},{"class":353,"line":392},[4984,4989,4994,4999],{"type":23,"tag":351,"props":4985,"children":4986},{"style":4575},[4987],{"type":29,"value":4988},"chown",{"type":23,"tag":351,"props":4990,"children":4991},{"style":696},[4992],{"type":29,"value":4993}," -R",{"type":23,"tag":351,"props":4995,"children":4996},{"style":4581},[4997],{"type":29,"value":4998}," 10001:10001",{"type":23,"tag":351,"props":5000,"children":5001},{"style":4581},[5002],{"type":29,"value":4980},{"type":23,"tag":4920,"props":5004,"children":5005},{"start":364},[5006],{"type":23,"tag":64,"props":5007,"children":5008},{},[5009,5011,5017],{"type":29,"value":5010},"Create and compile ",{"type":23,"tag":140,"props":5012,"children":5014},{"className":5013},[],[5015],{"type":29,"value":5016},"docker-compose.yml",{"type":29,"value":5018}," in the current directory.",{"type":23,"tag":341,"props":5020,"children":5024},{"code":5021,"language":5022,"meta":9,"className":5023,"style":9},"version: \"3.3\" # Use Docker Compose v3.3.\n\nservices:\n  ejbca: # Define the service ejbca.\n    image: keyfactor\u002Fejbca-ce:latest # Use the latest EJBCA image (community-edition) provided by Keyfactor.\n    container_name: ejbca # Set the container name to ejbca.\n    hostname: myejbca.test.local # Set the internal host name of the container, which affects fields such as CN in the certificate.\n\n    environment: # Set environment variables to configure the EJBCA startup behavior.\n      - DATABASE_JDBC_URL=jdbc:h2:\u002Fmnt\u002Fpersistent\u002Fejbcadb;DB_CLOSE_DELAY=-1 # Use the embedded H2 database. The data is stored in the mount directory.\n      - TLS_SETUP_ENABLED=true # Enable automatic TLS settings (for HTTPS access).\n      - SMTP_DESTINATION=192.168.xx.xx # Set the SMTP email server address (for sending notification emails).\n      - SMTP_DESTINATION_PORT=25 # Set SMTP service port. The default value is 25. (Encryption is disabled.)\n      - SMTP_FROM=ejbca@example.local # Set the email sender address.\n      - SMTP_TLS_ENABLED=false # Do not enable STARTTLS for SMTP.\n      - SMTP_SSL_ENABLED=false # Do not enable SSL\u002FTLS encryption for SMTP.\n\n    ports: # Map the container port to the host.\n      - \"80:8080\" # Map the host port 80 to the container port 8080 (HTTP).\n      - \"443:8443\" # Map the host port 443 to the container port 8443 (HTTPS).\n\n    volumes: # Mount the data volume to map the directory in the container to the host for data persistence.\n      - \u002Fopt\u002Fejbca-data:\u002Fmnt\u002Fpersistent # Mount the \u002Fopt\u002Fejbca-data directory on the host to the container to persist data such as the database.\n\n    restart: unless-stopped # If the container exits abnormally, the container is automatically restarted unless you manually stop the container.\n","yaml","language-yaml shiki shiki-themes github-light github-dark monokai",[5025],{"type":23,"tag":140,"props":5026,"children":5027},{"__ignoreMap":9},[5028,5052,5061,5074,5091,5113,5135,5157,5164,5181,5199,5216,5233,5250,5267,5284,5301,5308,5325,5342,5359,5366,5383,5399,5406],{"type":23,"tag":351,"props":5029,"children":5030},{"class":353,"line":354},[5031,5037,5041,5046],{"type":23,"tag":351,"props":5032,"children":5034},{"style":5033},"--shiki-default:#22863A;--shiki-dark:#85E89D;--shiki-sepia:#F92672",[5035],{"type":29,"value":5036},"version",{"type":23,"tag":351,"props":5038,"children":5039},{"style":358},[5040],{"type":29,"value":693},{"type":23,"tag":351,"props":5042,"children":5043},{"style":4581},[5044],{"type":29,"value":5045},"\"3.3\"",{"type":23,"tag":351,"props":5047,"children":5049},{"style":5048},"--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F",[5050],{"type":29,"value":5051}," # Use Docker Compose v3.3.\n",{"type":23,"tag":351,"props":5053,"children":5054},{"class":353,"line":364},[5055],{"type":23,"tag":351,"props":5056,"children":5058},{"emptyLinePlaceholder":5057},true,[5059],{"type":29,"value":5060},"\n",{"type":23,"tag":351,"props":5062,"children":5063},{"class":353,"line":379},[5064,5069],{"type":23,"tag":351,"props":5065,"children":5066},{"style":5033},[5067],{"type":29,"value":5068},"services",{"type":23,"tag":351,"props":5070,"children":5071},{"style":358},[5072],{"type":29,"value":5073},":\n",{"type":23,"tag":351,"props":5075,"children":5076},{"class":353,"line":392},[5077,5082,5086],{"type":23,"tag":351,"props":5078,"children":5079},{"style":5033},[5080],{"type":29,"value":5081},"  ejbca",{"type":23,"tag":351,"props":5083,"children":5084},{"style":358},[5085],{"type":29,"value":693},{"type":23,"tag":351,"props":5087,"children":5088},{"style":5048},[5089],{"type":29,"value":5090},"# Define the service ejbca.\n",{"type":23,"tag":351,"props":5092,"children":5093},{"class":353,"line":406},[5094,5099,5103,5108],{"type":23,"tag":351,"props":5095,"children":5096},{"style":5033},[5097],{"type":29,"value":5098},"    image",{"type":23,"tag":351,"props":5100,"children":5101},{"style":358},[5102],{"type":29,"value":693},{"type":23,"tag":351,"props":5104,"children":5105},{"style":4581},[5106],{"type":29,"value":5107},"keyfactor\u002Fejbca-ce:latest",{"type":23,"tag":351,"props":5109,"children":5110},{"style":5048},[5111],{"type":29,"value":5112}," # Use the latest EJBCA image (community-edition) provided by Keyfactor.\n",{"type":23,"tag":351,"props":5114,"children":5115},{"class":353,"line":421},[5116,5121,5125,5130],{"type":23,"tag":351,"props":5117,"children":5118},{"style":5033},[5119],{"type":29,"value":5120},"    container_name",{"type":23,"tag":351,"props":5122,"children":5123},{"style":358},[5124],{"type":29,"value":693},{"type":23,"tag":351,"props":5126,"children":5127},{"style":4581},[5128],{"type":29,"value":5129},"ejbca",{"type":23,"tag":351,"props":5131,"children":5132},{"style":5048},[5133],{"type":29,"value":5134}," # Set the container name to ejbca.\n",{"type":23,"tag":351,"props":5136,"children":5137},{"class":353,"line":434},[5138,5143,5147,5152],{"type":23,"tag":351,"props":5139,"children":5140},{"style":5033},[5141],{"type":29,"value":5142},"    hostname",{"type":23,"tag":351,"props":5144,"children":5145},{"style":358},[5146],{"type":29,"value":693},{"type":23,"tag":351,"props":5148,"children":5149},{"style":4581},[5150],{"type":29,"value":5151},"myejbca.test.local",{"type":23,"tag":351,"props":5153,"children":5154},{"style":5048},[5155],{"type":29,"value":5156}," # Set the internal host name of the container, which affects fields such as CN in the certificate.\n",{"type":23,"tag":351,"props":5158,"children":5159},{"class":353,"line":447},[5160],{"type":23,"tag":351,"props":5161,"children":5162},{"emptyLinePlaceholder":5057},[5163],{"type":29,"value":5060},{"type":23,"tag":351,"props":5165,"children":5166},{"class":353,"line":460},[5167,5172,5176],{"type":23,"tag":351,"props":5168,"children":5169},{"style":5033},[5170],{"type":29,"value":5171},"    environment",{"type":23,"tag":351,"props":5173,"children":5174},{"style":358},[5175],{"type":29,"value":693},{"type":23,"tag":351,"props":5177,"children":5178},{"style":5048},[5179],{"type":29,"value":5180},"# Set environment variables to configure the EJBCA startup behavior.\n",{"type":23,"tag":351,"props":5182,"children":5183},{"class":353,"line":473},[5184,5189,5194],{"type":23,"tag":351,"props":5185,"children":5186},{"style":358},[5187],{"type":29,"value":5188},"      - ",{"type":23,"tag":351,"props":5190,"children":5191},{"style":4581},[5192],{"type":29,"value":5193},"DATABASE_JDBC_URL=jdbc:h2:\u002Fmnt\u002Fpersistent\u002Fejbcadb;DB_CLOSE_DELAY=-1",{"type":23,"tag":351,"props":5195,"children":5196},{"style":5048},[5197],{"type":29,"value":5198}," # Use the embedded H2 database. The data is stored in the mount directory.\n",{"type":23,"tag":351,"props":5200,"children":5201},{"class":353,"line":486},[5202,5206,5211],{"type":23,"tag":351,"props":5203,"children":5204},{"style":358},[5205],{"type":29,"value":5188},{"type":23,"tag":351,"props":5207,"children":5208},{"style":4581},[5209],{"type":29,"value":5210},"TLS_SETUP_ENABLED=true",{"type":23,"tag":351,"props":5212,"children":5213},{"style":5048},[5214],{"type":29,"value":5215}," # Enable automatic TLS settings (for HTTPS access).\n",{"type":23,"tag":351,"props":5217,"children":5218},{"class":353,"line":499},[5219,5223,5228],{"type":23,"tag":351,"props":5220,"children":5221},{"style":358},[5222],{"type":29,"value":5188},{"type":23,"tag":351,"props":5224,"children":5225},{"style":4581},[5226],{"type":29,"value":5227},"SMTP_DESTINATION=192.168.xx.xx",{"type":23,"tag":351,"props":5229,"children":5230},{"style":5048},[5231],{"type":29,"value":5232}," # Set the SMTP email server address (for sending notification emails).\n",{"type":23,"tag":351,"props":5234,"children":5235},{"class":353,"line":512},[5236,5240,5245],{"type":23,"tag":351,"props":5237,"children":5238},{"style":358},[5239],{"type":29,"value":5188},{"type":23,"tag":351,"props":5241,"children":5242},{"style":4581},[5243],{"type":29,"value":5244},"SMTP_DESTINATION_PORT=25",{"type":23,"tag":351,"props":5246,"children":5247},{"style":5048},[5248],{"type":29,"value":5249}," # Set SMTP service port. The default value is 25. (Encryption is disabled.)\n",{"type":23,"tag":351,"props":5251,"children":5252},{"class":353,"line":525},[5253,5257,5262],{"type":23,"tag":351,"props":5254,"children":5255},{"style":358},[5256],{"type":29,"value":5188},{"type":23,"tag":351,"props":5258,"children":5259},{"style":4581},[5260],{"type":29,"value":5261},"SMTP_FROM=ejbca@example.local",{"type":23,"tag":351,"props":5263,"children":5264},{"style":5048},[5265],{"type":29,"value":5266}," # Set the email sender address.\n",{"type":23,"tag":351,"props":5268,"children":5269},{"class":353,"line":534},[5270,5274,5279],{"type":23,"tag":351,"props":5271,"children":5272},{"style":358},[5273],{"type":29,"value":5188},{"type":23,"tag":351,"props":5275,"children":5276},{"style":4581},[5277],{"type":29,"value":5278},"SMTP_TLS_ENABLED=false",{"type":23,"tag":351,"props":5280,"children":5281},{"style":5048},[5282],{"type":29,"value":5283}," # Do not enable STARTTLS for SMTP.\n",{"type":23,"tag":351,"props":5285,"children":5286},{"class":353,"line":543},[5287,5291,5296],{"type":23,"tag":351,"props":5288,"children":5289},{"style":358},[5290],{"type":29,"value":5188},{"type":23,"tag":351,"props":5292,"children":5293},{"style":4581},[5294],{"type":29,"value":5295},"SMTP_SSL_ENABLED=false",{"type":23,"tag":351,"props":5297,"children":5298},{"style":5048},[5299],{"type":29,"value":5300}," # Do not enable SSL\u002FTLS encryption for SMTP.\n",{"type":23,"tag":351,"props":5302,"children":5303},{"class":353,"line":552},[5304],{"type":23,"tag":351,"props":5305,"children":5306},{"emptyLinePlaceholder":5057},[5307],{"type":29,"value":5060},{"type":23,"tag":351,"props":5309,"children":5310},{"class":353,"line":565},[5311,5316,5320],{"type":23,"tag":351,"props":5312,"children":5313},{"style":5033},[5314],{"type":29,"value":5315},"    ports",{"type":23,"tag":351,"props":5317,"children":5318},{"style":358},[5319],{"type":29,"value":693},{"type":23,"tag":351,"props":5321,"children":5322},{"style":5048},[5323],{"type":29,"value":5324},"# Map the container port to the host.\n",{"type":23,"tag":351,"props":5326,"children":5327},{"class":353,"line":578},[5328,5332,5337],{"type":23,"tag":351,"props":5329,"children":5330},{"style":358},[5331],{"type":29,"value":5188},{"type":23,"tag":351,"props":5333,"children":5334},{"style":4581},[5335],{"type":29,"value":5336},"\"80:8080\"",{"type":23,"tag":351,"props":5338,"children":5339},{"style":5048},[5340],{"type":29,"value":5341}," # Map the host port 80 to the container port 8080 (HTTP).\n",{"type":23,"tag":351,"props":5343,"children":5344},{"class":353,"line":591},[5345,5349,5354],{"type":23,"tag":351,"props":5346,"children":5347},{"style":358},[5348],{"type":29,"value":5188},{"type":23,"tag":351,"props":5350,"children":5351},{"style":4581},[5352],{"type":29,"value":5353},"\"443:8443\"",{"type":23,"tag":351,"props":5355,"children":5356},{"style":5048},[5357],{"type":29,"value":5358}," # Map the host port 443 to the container port 8443 (HTTPS).\n",{"type":23,"tag":351,"props":5360,"children":5361},{"class":353,"line":600},[5362],{"type":23,"tag":351,"props":5363,"children":5364},{"emptyLinePlaceholder":5057},[5365],{"type":29,"value":5060},{"type":23,"tag":351,"props":5367,"children":5368},{"class":353,"line":609},[5369,5374,5378],{"type":23,"tag":351,"props":5370,"children":5371},{"style":5033},[5372],{"type":29,"value":5373},"    volumes",{"type":23,"tag":351,"props":5375,"children":5376},{"style":358},[5377],{"type":29,"value":693},{"type":23,"tag":351,"props":5379,"children":5380},{"style":5048},[5381],{"type":29,"value":5382},"# Mount the data volume to map the directory in the container to the host for data persistence.\n",{"type":23,"tag":351,"props":5384,"children":5385},{"class":353,"line":622},[5386,5390,5394],{"type":23,"tag":351,"props":5387,"children":5388},{"style":358},[5389],{"type":29,"value":5188},{"type":23,"tag":351,"props":5391,"children":5392},{"style":4581},[5393],{"type":29,"value":4879},{"type":23,"tag":351,"props":5395,"children":5396},{"style":5048},[5397],{"type":29,"value":5398}," # Mount the \u002Fopt\u002Fejbca-data directory on the host to the container to persist data such as the database.\n",{"type":23,"tag":351,"props":5400,"children":5401},{"class":353,"line":631},[5402],{"type":23,"tag":351,"props":5403,"children":5404},{"emptyLinePlaceholder":5057},[5405],{"type":29,"value":5060},{"type":23,"tag":351,"props":5407,"children":5408},{"class":353,"line":639},[5409,5414,5418,5423],{"type":23,"tag":351,"props":5410,"children":5411},{"style":5033},[5412],{"type":29,"value":5413},"    restart",{"type":23,"tag":351,"props":5415,"children":5416},{"style":358},[5417],{"type":29,"value":693},{"type":23,"tag":351,"props":5419,"children":5420},{"style":4581},[5421],{"type":29,"value":5422},"unless-stopped",{"type":23,"tag":351,"props":5424,"children":5425},{"style":5048},[5426],{"type":29,"value":5427}," # If the container exits abnormally, the container is automatically restarted unless you manually stop the container.\n",{"type":23,"tag":4920,"props":5429,"children":5430},{"start":379},[5431],{"type":23,"tag":64,"props":5432,"children":5433},{},[5434],{"type":29,"value":5435},"Start the container service.：",{"type":23,"tag":341,"props":5437,"children":5439},{"code":5438,"language":4564,"meta":9,"className":4565,"style":9},"docker-compose up -d\ndocker-compose logs -f\n",[5440],{"type":23,"tag":140,"props":5441,"children":5442},{"__ignoreMap":9},[5443,5461],{"type":23,"tag":351,"props":5444,"children":5445},{"class":353,"line":354},[5446,5451,5456],{"type":23,"tag":351,"props":5447,"children":5448},{"style":4575},[5449],{"type":29,"value":5450},"docker-compose",{"type":23,"tag":351,"props":5452,"children":5453},{"style":4581},[5454],{"type":29,"value":5455}," up",{"type":23,"tag":351,"props":5457,"children":5458},{"style":696},[5459],{"type":29,"value":5460}," -d\n",{"type":23,"tag":351,"props":5462,"children":5463},{"class":353,"line":364},[5464,5468,5473],{"type":23,"tag":351,"props":5465,"children":5466},{"style":4575},[5467],{"type":29,"value":5450},{"type":23,"tag":351,"props":5469,"children":5470},{"style":4581},[5471],{"type":29,"value":5472}," logs",{"type":23,"tag":351,"props":5474,"children":5475},{"style":696},[5476],{"type":29,"value":5477}," -f\n",{"type":23,"tag":4905,"props":5479,"children":5480},{},[5481],{"type":23,"tag":37,"props":5482,"children":5483},{},[5484],{"type":29,"value":5485},"⚙️ You can use Compose to easily manage configuration versions, facilitating team collaboration and version recovery.",{"type":23,"tag":4530,"props":5487,"children":5489},{"id":5488},"_44-remote-access-configuration",[5490],{"type":29,"value":5491},"4.4 Remote Access Configuration",{"type":23,"tag":4920,"props":5493,"children":5494},{},[5495],{"type":23,"tag":64,"props":5496,"children":5497},{},[5498],{"type":29,"value":5499},"Set the container's hostname in advance, which affects CN of the TLS certificate.",{"type":23,"tag":341,"props":5501,"children":5503},{"code":5502,"language":5022,"meta":9,"className":5023,"style":9},"hostname: myejbca.test.local\n",[5504],{"type":23,"tag":140,"props":5505,"children":5506},{"__ignoreMap":9},[5507],{"type":23,"tag":351,"props":5508,"children":5509},{"class":353,"line":354},[5510,5515,5519],{"type":23,"tag":351,"props":5511,"children":5512},{"style":5033},[5513],{"type":29,"value":5514},"hostname",{"type":23,"tag":351,"props":5516,"children":5517},{"style":358},[5518],{"type":29,"value":693},{"type":23,"tag":351,"props":5520,"children":5521},{"style":4581},[5522],{"type":29,"value":5523},"myejbca.test.local\n",{"type":23,"tag":4530,"props":5525,"children":5527},{"id":5526},"_45-certificate-trust-management",[5528],{"type":29,"value":5529},"4.5 Certificate Trust Management",{"type":23,"tag":37,"props":5531,"children":5532},{},[5533],{"type":29,"value":5534},"After downloading the super administrator certificate ·, double-click to import it.",{"type":23,"tag":4530,"props":5536,"children":5538},{"id":5537},"_46-login-process-summary",[5539],{"type":29,"value":5540},"4.6 Login Process Summary",{"type":23,"tag":4920,"props":5542,"children":5543},{},[5544],{"type":23,"tag":64,"props":5545,"children":5546},{},[5547,5549,5555],{"type":29,"value":5548},"Run ",{"type":23,"tag":140,"props":5550,"children":5552},{"className":5551},[],[5553],{"type":29,"value":5554},"docker-compose logs -f",{"type":29,"value":5556}," to search for SuperAdmin URL and one-time password in the container logs.",{"type":23,"tag":341,"props":5558,"children":5560},{"code":5559,"language":4564,"meta":9,"className":4565,"style":9},"ejbca    | 2025-08-05 09:11:31,656+0000 INFO  [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] (process:1) *                                                                                                    *\nejbca    | 2025-08-05 09:11:31,656+0000 INFO  [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] (process:1) *   URL:      https:\u002F\u002Fmyejbca.test.local:443\u002Fejbca\u002Fra\u002Fenrollwithusername.xhtml?username=superadmin *\nejbca    | 2025-08-05 09:11:31,656+0000 INFO  [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] (process:1) *   Password: urAMy0He5c\u002FhHy+DYyDFNy4E                                                               *\nejbca    | 2025-08-05 09:11:31,656+0000 INFO  [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] (process:1) *                                                                                                    *\nejbca    | 2025-08-05 09:11:31,656+0000 INFO  [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] (process:1) * Once the P12 is downloaded, use \"urAMy0He5c\u002FhHy+DYyDFNy4E\" to import it.                           *\nejbca    | 2025-08-05 09:11:31,656+0000 INFO  [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] (process:1) *                                                                                                    *\nejbca    | 2025-08-05 09:11:31,656+0000 INFO  [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] (process:1) ******************************************************************************************************\n",[5561],{"type":23,"tag":140,"props":5562,"children":5563},{"__ignoreMap":9},[5564,5616,5685,5734,5777,5835,5878],{"type":23,"tag":351,"props":5565,"children":5566},{"class":353,"line":354},[5567,5571,5576,5581,5586,5591,5596,5601,5606,5611],{"type":23,"tag":351,"props":5568,"children":5569},{"style":4575},[5570],{"type":29,"value":5129},{"type":23,"tag":351,"props":5572,"children":5573},{"style":4781},[5574],{"type":29,"value":5575},"    |",{"type":23,"tag":351,"props":5577,"children":5578},{"style":4575},[5579],{"type":29,"value":5580}," 2025-08-05",{"type":23,"tag":351,"props":5582,"children":5583},{"style":4581},[5584],{"type":29,"value":5585}," 09:11:31,656+0000",{"type":23,"tag":351,"props":5587,"children":5588},{"style":4581},[5589],{"type":29,"value":5590}," INFO",{"type":23,"tag":351,"props":5592,"children":5593},{"style":358},[5594],{"type":29,"value":5595},"  [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] (",{"type":23,"tag":351,"props":5597,"children":5598},{"style":4575},[5599],{"type":29,"value":5600},"process:1",{"type":23,"tag":351,"props":5602,"children":5603},{"style":358},[5604],{"type":29,"value":5605},") ",{"type":23,"tag":351,"props":5607,"children":5608},{"style":4781},[5609],{"type":29,"value":5610},"*",{"type":23,"tag":351,"props":5612,"children":5613},{"style":4781},[5614],{"type":29,"value":5615},"                                                                                                    *\n",{"type":23,"tag":351,"props":5617,"children":5618},{"class":353,"line":364},[5619,5623,5627,5631,5635,5639,5643,5647,5651,5655,5660,5665,5670,5675,5680],{"type":23,"tag":351,"props":5620,"children":5621},{"style":4575},[5622],{"type":29,"value":5129},{"type":23,"tag":351,"props":5624,"children":5625},{"style":4781},[5626],{"type":29,"value":5575},{"type":23,"tag":351,"props":5628,"children":5629},{"style":4575},[5630],{"type":29,"value":5580},{"type":23,"tag":351,"props":5632,"children":5633},{"style":4581},[5634],{"type":29,"value":5585},{"type":23,"tag":351,"props":5636,"children":5637},{"style":4581},[5638],{"type":29,"value":5590},{"type":23,"tag":351,"props":5640,"children":5641},{"style":358},[5642],{"type":29,"value":5595},{"type":23,"tag":351,"props":5644,"children":5645},{"style":4575},[5646],{"type":29,"value":5600},{"type":23,"tag":351,"props":5648,"children":5649},{"style":358},[5650],{"type":29,"value":5605},{"type":23,"tag":351,"props":5652,"children":5653},{"style":4781},[5654],{"type":29,"value":5610},{"type":23,"tag":351,"props":5656,"children":5657},{"style":358},[5658],{"type":29,"value":5659},"   URL:      https:\u002F\u002Fmyejbca.test.local:443\u002Fejbca\u002Fra\u002Fenrollwithusername.xhtml",{"type":23,"tag":351,"props":5661,"children":5662},{"style":4781},[5663],{"type":29,"value":5664},"?",{"type":23,"tag":351,"props":5666,"children":5667},{"style":358},[5668],{"type":29,"value":5669},"username",{"type":23,"tag":351,"props":5671,"children":5672},{"style":4781},[5673],{"type":29,"value":5674},"=",{"type":23,"tag":351,"props":5676,"children":5677},{"style":4581},[5678],{"type":29,"value":5679},"superadmin",{"type":23,"tag":351,"props":5681,"children":5682},{"style":4575},[5683],{"type":29,"value":5684}," *\n",{"type":23,"tag":351,"props":5686,"children":5687},{"class":353,"line":379},[5688,5692,5696,5700,5704,5708,5712,5716,5720,5724,5729],{"type":23,"tag":351,"props":5689,"children":5690},{"style":4575},[5691],{"type":29,"value":5129},{"type":23,"tag":351,"props":5693,"children":5694},{"style":4781},[5695],{"type":29,"value":5575},{"type":23,"tag":351,"props":5697,"children":5698},{"style":4575},[5699],{"type":29,"value":5580},{"type":23,"tag":351,"props":5701,"children":5702},{"style":4581},[5703],{"type":29,"value":5585},{"type":23,"tag":351,"props":5705,"children":5706},{"style":4581},[5707],{"type":29,"value":5590},{"type":23,"tag":351,"props":5709,"children":5710},{"style":358},[5711],{"type":29,"value":5595},{"type":23,"tag":351,"props":5713,"children":5714},{"style":4575},[5715],{"type":29,"value":5600},{"type":23,"tag":351,"props":5717,"children":5718},{"style":358},[5719],{"type":29,"value":5605},{"type":23,"tag":351,"props":5721,"children":5722},{"style":4781},[5723],{"type":29,"value":5610},{"type":23,"tag":351,"props":5725,"children":5726},{"style":358},[5727],{"type":29,"value":5728},"   Password: urAMy0He5c\u002FhHy+DYyDFNy4E                                                               ",{"type":23,"tag":351,"props":5730,"children":5731},{"style":4781},[5732],{"type":29,"value":5733},"*\n",{"type":23,"tag":351,"props":5735,"children":5736},{"class":353,"line":392},[5737,5741,5745,5749,5753,5757,5761,5765,5769,5773],{"type":23,"tag":351,"props":5738,"children":5739},{"style":4575},[5740],{"type":29,"value":5129},{"type":23,"tag":351,"props":5742,"children":5743},{"style":4781},[5744],{"type":29,"value":5575},{"type":23,"tag":351,"props":5746,"children":5747},{"style":4575},[5748],{"type":29,"value":5580},{"type":23,"tag":351,"props":5750,"children":5751},{"style":4581},[5752],{"type":29,"value":5585},{"type":23,"tag":351,"props":5754,"children":5755},{"style":4581},[5756],{"type":29,"value":5590},{"type":23,"tag":351,"props":5758,"children":5759},{"style":358},[5760],{"type":29,"value":5595},{"type":23,"tag":351,"props":5762,"children":5763},{"style":4575},[5764],{"type":29,"value":5600},{"type":23,"tag":351,"props":5766,"children":5767},{"style":358},[5768],{"type":29,"value":5605},{"type":23,"tag":351,"props":5770,"children":5771},{"style":4781},[5772],{"type":29,"value":5610},{"type":23,"tag":351,"props":5774,"children":5775},{"style":4781},[5776],{"type":29,"value":5615},{"type":23,"tag":351,"props":5778,"children":5779},{"class":353,"line":406},[5780,5784,5788,5792,5796,5800,5804,5808,5812,5816,5821,5826,5831],{"type":23,"tag":351,"props":5781,"children":5782},{"style":4575},[5783],{"type":29,"value":5129},{"type":23,"tag":351,"props":5785,"children":5786},{"style":4781},[5787],{"type":29,"value":5575},{"type":23,"tag":351,"props":5789,"children":5790},{"style":4575},[5791],{"type":29,"value":5580},{"type":23,"tag":351,"props":5793,"children":5794},{"style":4581},[5795],{"type":29,"value":5585},{"type":23,"tag":351,"props":5797,"children":5798},{"style":4581},[5799],{"type":29,"value":5590},{"type":23,"tag":351,"props":5801,"children":5802},{"style":358},[5803],{"type":29,"value":5595},{"type":23,"tag":351,"props":5805,"children":5806},{"style":4575},[5807],{"type":29,"value":5600},{"type":23,"tag":351,"props":5809,"children":5810},{"style":358},[5811],{"type":29,"value":5605},{"type":23,"tag":351,"props":5813,"children":5814},{"style":4781},[5815],{"type":29,"value":5610},{"type":23,"tag":351,"props":5817,"children":5818},{"style":358},[5819],{"type":29,"value":5820}," Once the P12 is downloaded, use ",{"type":23,"tag":351,"props":5822,"children":5823},{"style":4581},[5824],{"type":29,"value":5825},"\"urAMy0He5c\u002FhHy+DYyDFNy4E\"",{"type":23,"tag":351,"props":5827,"children":5828},{"style":358},[5829],{"type":29,"value":5830}," to import it.                           ",{"type":23,"tag":351,"props":5832,"children":5833},{"style":4781},[5834],{"type":29,"value":5733},{"type":23,"tag":351,"props":5836,"children":5837},{"class":353,"line":421},[5838,5842,5846,5850,5854,5858,5862,5866,5870,5874],{"type":23,"tag":351,"props":5839,"children":5840},{"style":4575},[5841],{"type":29,"value":5129},{"type":23,"tag":351,"props":5843,"children":5844},{"style":4781},[5845],{"type":29,"value":5575},{"type":23,"tag":351,"props":5847,"children":5848},{"style":4575},[5849],{"type":29,"value":5580},{"type":23,"tag":351,"props":5851,"children":5852},{"style":4581},[5853],{"type":29,"value":5585},{"type":23,"tag":351,"props":5855,"children":5856},{"style":4581},[5857],{"type":29,"value":5590},{"type":23,"tag":351,"props":5859,"children":5860},{"style":358},[5861],{"type":29,"value":5595},{"type":23,"tag":351,"props":5863,"children":5864},{"style":4575},[5865],{"type":29,"value":5600},{"type":23,"tag":351,"props":5867,"children":5868},{"style":358},[5869],{"type":29,"value":5605},{"type":23,"tag":351,"props":5871,"children":5872},{"style":4781},[5873],{"type":29,"value":5610},{"type":23,"tag":351,"props":5875,"children":5876},{"style":4781},[5877],{"type":29,"value":5615},{"type":23,"tag":351,"props":5879,"children":5880},{"class":353,"line":434},[5881,5885,5889,5893,5897,5901,5905,5909,5913],{"type":23,"tag":351,"props":5882,"children":5883},{"style":4575},[5884],{"type":29,"value":5129},{"type":23,"tag":351,"props":5886,"children":5887},{"style":4781},[5888],{"type":29,"value":5575},{"type":23,"tag":351,"props":5890,"children":5891},{"style":4575},[5892],{"type":29,"value":5580},{"type":23,"tag":351,"props":5894,"children":5895},{"style":4581},[5896],{"type":29,"value":5585},{"type":23,"tag":351,"props":5898,"children":5899},{"style":4581},[5900],{"type":29,"value":5590},{"type":23,"tag":351,"props":5902,"children":5903},{"style":358},[5904],{"type":29,"value":5595},{"type":23,"tag":351,"props":5906,"children":5907},{"style":4575},[5908],{"type":29,"value":5600},{"type":23,"tag":351,"props":5910,"children":5911},{"style":358},[5912],{"type":29,"value":5605},{"type":23,"tag":351,"props":5914,"children":5915},{"style":4781},[5916],{"type":29,"value":5917},"******************************************************************************************************\n",{"type":23,"tag":4920,"props":5919,"children":5920},{},[5921,5934,5946],{"type":23,"tag":64,"props":5922,"children":5923},{},[5924,5926,5932],{"type":29,"value":5925},"Access the URL, enter the password, set the export password, and download the ",{"type":23,"tag":140,"props":5927,"children":5929},{"className":5928},[],[5930],{"type":29,"value":5931},".p12",{"type":29,"value":5933}," certificate.",{"type":23,"tag":64,"props":5935,"children":5936},{},[5937,5939,5945],{"type":29,"value":5938},"Import the certificate and access ",{"type":23,"tag":43,"props":5940,"children":5943},{"href":5941,"rel":5942},"https:\u002F\u002Fmyejbca.test.local\u002Fejbca\u002Fadminweb",[47],[5944],{"type":29,"value":5941},{"type":29,"value":52},{"type":23,"tag":64,"props":5947,"children":5948},{},[5949],{"type":29,"value":5950},"If the system displays a message indicating that the client certificate is not provided, check whether the certificate is successfully imported, the proxy is disabled, and the domain name is correctly resolved.",{"type":23,"tag":4905,"props":5952,"children":5953},{},[5954],{"type":23,"tag":37,"props":5955,"children":5956},{},[5957],{"type":29,"value":5958},"✅ So far, the EJBCA deployment, persistence, and management login process is completed.",{"type":23,"tag":4530,"props":5960,"children":5962},{"id":5961},"important-notes-must-be-followed",[5963],{"type":29,"value":5964},"Important Notes (Must Be Followed)",{"type":23,"tag":37,"props":5966,"children":5967},{},[5968,5970,5975,5977,5981,5983,5987,5989,5992,5994,5999,6001,6004,6005,6010,6012,6018,6020,6023,6024,6029,6030,6035],{"type":29,"value":5969},"✅ ",{"type":23,"tag":4453,"props":5971,"children":5972},{},[5973],{"type":29,"value":5974},"You must",{"type":29,"value":5976}," add ",{"type":23,"tag":4453,"props":5978,"children":5979},{},[5980],{"type":29,"value":5151},{"type":29,"value":5982}," to the hosts file or set up a local DNS server. Otherwise, the browser may fail to resolve the domain name.",{"type":23,"tag":5984,"props":5985,"children":5986},"br",{},[],{"type":29,"value":5988},"\n✅ The default algorithm for the super administrator certificate is DILITHIUM2, which may vary by version. However, Windows probably cannot recognize DILITHIUM2. To ensure compatibility, it is advised to switch the algorithm to RSA 4096.",{"type":23,"tag":5984,"props":5990,"children":5991},{},[],{"type":29,"value":5993},"\n✅ ",{"type":23,"tag":4453,"props":5995,"children":5996},{},[5997],{"type":29,"value":5998},"No proxy should be enabled",{"type":29,"value":6000},". Otherwise, EJBCA may fail to correctly process client certificate authentication.",{"type":23,"tag":5984,"props":6002,"children":6003},{},[],{"type":29,"value":5993},{"type":23,"tag":4453,"props":6006,"children":6007},{},[6008],{"type":29,"value":6009},"Ensure that the Windows\u002FmacOS\u002FLinux certificate is correctly imported",{"type":29,"value":6011}," to avoid the \"",{"type":23,"tag":140,"props":6013,"children":6015},{"className":6014},[],[6016],{"type":29,"value":6017},"No client certificate was presented",{"type":29,"value":6019},"\" error.",{"type":23,"tag":5984,"props":6021,"children":6022},{},[],{"type":29,"value":5993},{"type":23,"tag":4453,"props":6025,"children":6026},{},[6027],{"type":29,"value":6028},"It is recommended that you use the Chrome browser in Incognito mode for the first time",{"type":29,"value":6011},{"type":23,"tag":140,"props":6031,"children":6033},{"className":6032},[],[6034],{"type":29,"value":6017},{"type":29,"value":6036},"\" error caused by cache problems.",{"type":23,"tag":4461,"props":6038,"children":6039},{},[],{"type":23,"tag":4161,"props":6041,"children":6043},{"id":6042},"_5-initial-ca-creation-and-certificate-level-setup",[6044],{"type":29,"value":6045},"5. Initial CA Creation and Certificate Level Setup",{"type":23,"tag":4530,"props":6047,"children":6049},{"id":6048},"_51-managing-certificate-profiles",[6050],{"type":29,"value":6051},"5.1 Managing Certificate Profiles",{"type":23,"tag":60,"props":6053,"children":6054},{},[6055,6060],{"type":23,"tag":64,"props":6056,"children":6057},{},[6058],{"type":29,"value":6059},"Log in to the EJBCA management console.",{"type":23,"tag":64,"props":6061,"children":6062},{},[6063,6065,6070],{"type":29,"value":6064},"Choose ",{"type":23,"tag":4453,"props":6066,"children":6067},{},[6068],{"type":29,"value":6069},"CA Functions > Certificate Profiles",{"type":29,"value":52},{"type":23,"tag":4530,"props":6072,"children":6074},{"id":6073},"_52-creating-a-certificate-profile",[6075],{"type":29,"value":6076},"5.2 Creating a Certificate Profile",{"type":23,"tag":4550,"props":6078,"children":6080},{"id":6079},"method-1-cloning-an-existing-profile",[6081],{"type":29,"value":6082},"Method 1: Cloning an Existing Profile",{"type":23,"tag":60,"props":6084,"children":6085},{},[6086,6098],{"type":23,"tag":64,"props":6087,"children":6088},{},[6089,6091,6096],{"type":29,"value":6090},"Find an appropriate profile (for example, ",{"type":23,"tag":4453,"props":6092,"children":6093},{},[6094],{"type":29,"value":6095},"ENDUSER",{"type":29,"value":6097},") in the list.",{"type":23,"tag":64,"props":6099,"children":6100},{},[6101,6103,6108],{"type":29,"value":6102},"Click ",{"type":23,"tag":4453,"props":6104,"children":6105},{},[6106],{"type":29,"value":6107},"Clone",{"type":29,"value":6109},", enter the new name, and save the profile.",{"type":23,"tag":4550,"props":6111,"children":6113},{"id":6112},"method-2-manually-creating-a-profile",[6114],{"type":29,"value":6115},"Method 2: Manually Creating a Profile",{"type":23,"tag":60,"props":6117,"children":6118},{},[6119,6130,6149],{"type":23,"tag":64,"props":6120,"children":6121},{},[6122,6123,6128],{"type":29,"value":6102},{"type":23,"tag":4453,"props":6124,"children":6125},{},[6126],{"type":29,"value":6127},"Add",{"type":29,"value":6129}," and enter the name. The editing page is displayed.",{"type":23,"tag":64,"props":6131,"children":6132},{},[6133,6135,6140,6142,6147],{"type":29,"value":6134},"Set necessary information as required, including ",{"type":23,"tag":4453,"props":6136,"children":6137},{},[6138],{"type":29,"value":6139},"Key Usage",{"type":29,"value":6141},", ",{"type":23,"tag":4453,"props":6143,"children":6144},{},[6145],{"type":29,"value":6146},"Extended Key Usage",{"type":29,"value":6148},", validity period, and Subject DN.",{"type":23,"tag":64,"props":6150,"children":6151},{},[6152],{"type":29,"value":6153},"Save the settings and return to the list for check.",{"type":23,"tag":4530,"props":6155,"children":6157},{"id":6156},"_53-creating-a-crypto-token",[6158],{"type":29,"value":6159},"5.3 Creating a Crypto Token",{"type":23,"tag":4920,"props":6161,"children":6162},{},[6163,6174,6261],{"type":23,"tag":64,"props":6164,"children":6165},{},[6166,6167,6172],{"type":29,"value":6064},{"type":23,"tag":4453,"props":6168,"children":6169},{},[6170],{"type":29,"value":6171},"CA Functions → Crypto Tokens",{"type":29,"value":6173},"。",{"type":23,"tag":64,"props":6175,"children":6176},{},[6177,6178,6183,6185],{"type":29,"value":6102},{"type":23,"tag":4453,"props":6179,"children":6180},{},[6181],{"type":29,"value":6182},"Create new",{"type":29,"value":6184}," and enter the following information:",{"type":23,"tag":60,"props":6186,"children":6187},{},[6188,6198,6215,6225,6242],{"type":23,"tag":64,"props":6189,"children":6190},{},[6191,6196],{"type":23,"tag":4453,"props":6192,"children":6193},{},[6194],{"type":29,"value":6195},"Name",{"type":29,"value":6197},"：Enter the name of your crypto token.",{"type":23,"tag":64,"props":6199,"children":6200},{},[6201,6206,6208,6214],{"type":23,"tag":4453,"props":6202,"children":6203},{},[6204],{"type":29,"value":6205},"Type",{"type":29,"value":6207},"：Select ",{"type":23,"tag":140,"props":6209,"children":6211},{"className":6210},[],[6212],{"type":29,"value":6213},"SOFT",{"type":29,"value":6173},{"type":23,"tag":64,"props":6216,"children":6217},{},[6218,6223],{"type":23,"tag":4453,"props":6219,"children":6220},{},[6221],{"type":29,"value":6222},"Auto-activation(Optional)",{"type":29,"value":6224},"：If selected, the crypto token can be automatically activated.",{"type":23,"tag":64,"props":6226,"children":6227},{},[6228,6233,6234,6240],{"type":23,"tag":4453,"props":6229,"children":6230},{},[6231],{"type":29,"value":6232},"Allow export of private keys",{"type":29,"value":6207},{"type":23,"tag":140,"props":6235,"children":6237},{"className":6236},[],[6238],{"type":29,"value":6239},"Allow",{"type":29,"value":6241}," if you want to export the private key.",{"type":23,"tag":64,"props":6243,"children":6244},{},[6245,6250,6252,6255],{"type":23,"tag":4453,"props":6246,"children":6247},{},[6248],{"type":29,"value":6249},"Authentication Code",{"type":29,"value":6251},"：Enter the authentication code and confirm it.",{"type":23,"tag":5984,"props":6253,"children":6254},{},[],{"type":23,"tag":140,"props":6256,"children":6258},{"className":6257},[],[6259],{"type":29,"value":6260},"dd if=\u002Fdev\u002Frandom bs=1 count=128 2>&1| sha256sum | awk '{print $1}",{"type":23,"tag":64,"props":6262,"children":6263},{},[6264,6266,6271],{"type":29,"value":6265},"Save the settings and ensure that the status is ",{"type":23,"tag":4453,"props":6267,"children":6268},{},[6269],{"type":29,"value":6270},"Active",{"type":29,"value":6272}," in the list。",{"type":23,"tag":4530,"props":6274,"children":6276},{"id":6275},"_54-generating-a-key-pair",[6277],{"type":29,"value":6278},"5.4 Generating a Key Pair",{"type":23,"tag":60,"props":6280,"children":6281},{},[6282,6294,6314,6326],{"type":23,"tag":64,"props":6283,"children":6284},{},[6285,6287,6292],{"type":29,"value":6286},"Access the x",{"type":23,"tag":4453,"props":6288,"children":6289},{},[6290],{"type":29,"value":6291},"Crypto Token",{"type":29,"value":6293}," details page.",{"type":23,"tag":64,"props":6295,"children":6296},{},[6297,6299,6305,6307,6313],{"type":29,"value":6298},"Enter the key name, for example, ",{"type":23,"tag":140,"props":6300,"children":6302},{"className":6301},[],[6303],{"type":29,"value":6304},"signKey",{"type":29,"value":6306},", in ",{"type":23,"tag":140,"props":6308,"children":6310},{"className":6309},[],[6311],{"type":29,"value":6312},"Crypto Token currently does not contain any key pairs",{"type":29,"value":52},{"type":23,"tag":64,"props":6315,"children":6316},{},[6317,6319,6325],{"type":29,"value":6318},"Select a key algorithm, for example, ",{"type":23,"tag":140,"props":6320,"children":6322},{"className":6321},[],[6323],{"type":29,"value":6324},"RSA 4096",{"type":29,"value":52},{"type":23,"tag":64,"props":6327,"children":6328},{},[6329,6330,6335],{"type":29,"value":6102},{"type":23,"tag":4453,"props":6331,"children":6332},{},[6333],{"type":29,"value":6334},"Generate new key pair",{"type":29,"value":52},{"type":23,"tag":4905,"props":6337,"children":6338},{},[6339],{"type":23,"tag":37,"props":6340,"children":6341},{},[6342,6347],{"type":23,"tag":4453,"props":6343,"children":6344},{},[6345],{"type":29,"value":6346},"Note",{"type":29,"value":6348},": The default profile cannot be modified. You need to clone it before creating a new one.",{"type":23,"tag":4530,"props":6350,"children":6352},{"id":6351},"_55-creating-a-ca",[6353],{"type":29,"value":6354},"5.5 Creating a CA",{"type":23,"tag":4920,"props":6356,"children":6357},{},[6358,6368,6387,6427,6439,6458],{"type":23,"tag":64,"props":6359,"children":6360},{},[6361,6362,6367],{"type":29,"value":6064},{"type":23,"tag":4453,"props":6363,"children":6364},{},[6365],{"type":29,"value":6366},"CA Functions → Certification Authorities",{"type":29,"value":6173},{"type":23,"tag":64,"props":6369,"children":6370},{},[6371,6373,6379,6381,6386],{"type":29,"value":6372},"The default ",{"type":23,"tag":140,"props":6374,"children":6376},{"className":6375},[],[6377],{"type":29,"value":6378},"ManagementCA (Active)",{"type":29,"value":6380}," is displayed in the list on the top. ",{"type":23,"tag":4453,"props":6382,"children":6383},{},[6384],{"type":29,"value":6385},"You do not need to select it",{"type":29,"value":6173},{"type":23,"tag":64,"props":6388,"children":6389},{},[6390,6392,6398,6400],{"type":29,"value":6391},"Scroll to the ",{"type":23,"tag":140,"props":6393,"children":6395},{"className":6394},[],[6396],{"type":29,"value":6397},"Add CA",{"type":29,"value":6399}," area at the bottom of the page.\n",{"type":23,"tag":60,"props":6401,"children":6402},{},[6403,6416],{"type":23,"tag":64,"props":6404,"children":6405},{},[6406,6408,6414],{"type":29,"value":6407},"Enter the new CA name, for example, ",{"type":23,"tag":140,"props":6409,"children":6411},{"className":6410},[],[6412],{"type":29,"value":6413},"DemoCA",{"type":29,"value":6415},", in the text box.",{"type":23,"tag":64,"props":6417,"children":6418},{},[6419,6420,6425],{"type":29,"value":6102},{"type":23,"tag":4453,"props":6421,"children":6422},{},[6423],{"type":29,"value":6424},"Create…",{"type":29,"value":6426}," on the right. The CA configuration wizard is displayed.",{"type":23,"tag":64,"props":6428,"children":6429},{},[6430,6432,6437],{"type":29,"value":6431},"Enter necessary fields on the ",{"type":23,"tag":4453,"props":6433,"children":6434},{},[6435],{"type":29,"value":6436},"Create CA",{"type":29,"value":6438}," page.",{"type":23,"tag":64,"props":6440,"children":6441},{},[6442,6443,6448,6450,6456],{"type":29,"value":6102},{"type":23,"tag":4453,"props":6444,"children":6445},{},[6446],{"type":29,"value":6447},"Create",{"type":29,"value":6449}," at the bottom to save the CA. If the configuration is correct, the CA list is displayed and the ",{"type":23,"tag":140,"props":6451,"children":6453},{"className":6452},[],[6454],{"type":29,"value":6455},"DemoSubCA (Active)",{"type":29,"value":6457}," status is displayed.",{"type":23,"tag":64,"props":6459,"children":6460},{},[6461,6463,6468],{"type":29,"value":6462},"(Optional) If you want to manually upload the certificate issued by the root CA, select the new CA in the list and select ",{"type":23,"tag":4453,"props":6464,"children":6465},{},[6466],{"type":29,"value":6467},"Import CA certificate…",{"type":29,"value":6469}," to upload the chain file.",{"type":23,"tag":37,"props":6471,"children":6472},{},[6473],{"type":29,"value":6474},"The intermediate CA is created. You can use it to issue end-entity certificates.",{"type":23,"tag":4530,"props":6476,"children":6478},{"id":6477},"_56-example-creating-a-root-ca",[6479],{"type":29,"value":6480},"5.6 (Example) Creating a Root CA",{"type":23,"tag":4550,"props":6482,"children":6484},{"id":6483},"_1️⃣-ca-type-and-key-configuration",[6485],{"type":29,"value":6486},"1️⃣ CA type and key configuration",{"type":23,"tag":203,"props":6488,"children":6489},{},[6490,6512],{"type":23,"tag":207,"props":6491,"children":6492},{},[6493],{"type":23,"tag":211,"props":6494,"children":6495},{},[6496,6504],{"type":23,"tag":215,"props":6497,"children":6498},{},[6499],{"type":23,"tag":4453,"props":6500,"children":6501},{},[6502],{"type":29,"value":6503},"Parameter",{"type":23,"tag":215,"props":6505,"children":6506},{},[6507],{"type":23,"tag":4453,"props":6508,"children":6509},{},[6510],{"type":29,"value":6511},"Description",{"type":23,"tag":226,"props":6513,"children":6514},{},[6515,6538,6567,6590,6614,6637,6660],{"type":23,"tag":211,"props":6516,"children":6517},{},[6518,6526],{"type":23,"tag":233,"props":6519,"children":6520},{},[6521],{"type":23,"tag":4453,"props":6522,"children":6523},{},[6524],{"type":29,"value":6525},"CA Type",{"type":23,"tag":233,"props":6527,"children":6528},{},[6529,6530,6536],{"type":29,"value":5969},{"type":23,"tag":140,"props":6531,"children":6533},{"className":6532},[],[6534],{"type":29,"value":6535},"X.509 CA",{"type":29,"value":6537},"; Standard X.509 CA",{"type":23,"tag":211,"props":6539,"children":6540},{},[6541,6548],{"type":23,"tag":233,"props":6542,"children":6543},{},[6544],{"type":23,"tag":4453,"props":6545,"children":6546},{},[6547],{"type":29,"value":6291},{"type":23,"tag":233,"props":6549,"children":6550},{},[6551,6553,6558,6560,6566],{"type":29,"value":6552},"✅ Select the created ",{"type":23,"tag":140,"props":6554,"children":6556},{"className":6555},[],[6557],{"type":29,"value":6291},{"type":29,"value":6559},", for example, ",{"type":23,"tag":140,"props":6561,"children":6563},{"className":6562},[],[6564],{"type":29,"value":6565},"demoCrypto",{"type":29,"value":52},{"type":23,"tag":211,"props":6568,"children":6569},{},[6570,6578],{"type":23,"tag":233,"props":6571,"children":6572},{},[6573],{"type":23,"tag":4453,"props":6574,"children":6575},{},[6576],{"type":29,"value":6577},"Signing Algorithm",{"type":23,"tag":233,"props":6579,"children":6580},{},[6581,6582,6588],{"type":29,"value":5969},{"type":23,"tag":140,"props":6583,"children":6585},{"className":6584},[],[6586],{"type":29,"value":6587},"SHA256WithRSA",{"type":29,"value":6589},"; Secure signature algorithm",{"type":23,"tag":211,"props":6591,"children":6592},{},[6593,6601],{"type":23,"tag":233,"props":6594,"children":6595},{},[6596],{"type":23,"tag":4453,"props":6597,"children":6598},{},[6599],{"type":29,"value":6600},"Alternative Signing Algorithm",{"type":23,"tag":233,"props":6602,"children":6603},{},[6604,6606,6612],{"type":29,"value":6605},"❌ ",{"type":23,"tag":140,"props":6607,"children":6609},{"className":6608},[],[6610],{"type":29,"value":6611},"None",{"type":29,"value":6613},"; No backup signature algorithm is required.",{"type":23,"tag":211,"props":6615,"children":6616},{},[6617,6625],{"type":23,"tag":233,"props":6618,"children":6619},{},[6620],{"type":23,"tag":4453,"props":6621,"children":6622},{},[6623],{"type":29,"value":6624},"Key Sequence Format",{"type":23,"tag":233,"props":6626,"children":6627},{},[6628,6629,6635],{"type":29,"value":5969},{"type":23,"tag":140,"props":6630,"children":6632},{"className":6631},[],[6633],{"type":29,"value":6634},"Numeric (0-9)",{"type":29,"value":6636},"; Serial number of the CA certificate",{"type":23,"tag":211,"props":6638,"children":6639},{},[6640,6648],{"type":23,"tag":233,"props":6641,"children":6642},{},[6643],{"type":23,"tag":4453,"props":6644,"children":6645},{},[6646],{"type":29,"value":6647},"Key Sequence",{"type":23,"tag":233,"props":6649,"children":6650},{},[6651,6652,6658],{"type":29,"value":5969},{"type":23,"tag":140,"props":6653,"children":6655},{"className":6654},[],[6656],{"type":29,"value":6657},"00000",{"type":29,"value":6659}," ; Initial serial number, which can be changed.",{"type":23,"tag":211,"props":6661,"children":6662},{},[6663,6670],{"type":23,"tag":233,"props":6664,"children":6665},{},[6666],{"type":23,"tag":4453,"props":6667,"children":6668},{},[6669],{"type":29,"value":6511},{"type":23,"tag":233,"props":6671,"children":6672},{},[6673],{"type":29,"value":6674},"✅ Root CA description, including the purpose and management unit.",{"type":23,"tag":4461,"props":6676,"children":6677},{},[],{"type":23,"tag":4550,"props":6679,"children":6681},{"id":6680},"_2️⃣-certificate-policies-directives",[6682],{"type":29,"value":6683},"2️⃣ Certificate policies (Directives)",{"type":23,"tag":203,"props":6685,"children":6686},{},[6687,6707],{"type":23,"tag":207,"props":6688,"children":6689},{},[6690],{"type":23,"tag":211,"props":6691,"children":6692},{},[6693,6700],{"type":23,"tag":215,"props":6694,"children":6695},{},[6696],{"type":23,"tag":4453,"props":6697,"children":6698},{},[6699],{"type":29,"value":6503},{"type":23,"tag":215,"props":6701,"children":6702},{},[6703],{"type":23,"tag":4453,"props":6704,"children":6705},{},[6706],{"type":29,"value":6511},{"type":23,"tag":226,"props":6708,"children":6709},{},[6710,6726,6742,6766,6782,6798,6814],{"type":23,"tag":211,"props":6711,"children":6712},{},[6713,6721],{"type":23,"tag":233,"props":6714,"children":6715},{},[6716],{"type":23,"tag":4453,"props":6717,"children":6718},{},[6719],{"type":29,"value":6720},"Enforce unique public keys",{"type":23,"tag":233,"props":6722,"children":6723},{},[6724],{"type":29,"value":6725},"✅ Enforces the public key to be unique.",{"type":23,"tag":211,"props":6727,"children":6728},{},[6729,6737],{"type":23,"tag":233,"props":6730,"children":6731},{},[6732],{"type":23,"tag":4453,"props":6733,"children":6734},{},[6735],{"type":29,"value":6736},"Enforce key renewal",{"type":23,"tag":233,"props":6738,"children":6739},{},[6740],{"type":29,"value":6741},"❌ Not required for the root CA.",{"type":23,"tag":211,"props":6743,"children":6744},{},[6745,6753],{"type":23,"tag":233,"props":6746,"children":6747},{},[6748],{"type":23,"tag":4453,"props":6749,"children":6750},{},[6751],{"type":29,"value":6752},"Enforce unique DN",{"type":23,"tag":233,"props":6754,"children":6755},{},[6756,6758,6764],{"type":29,"value":6757},"✅ Ensures ",{"type":23,"tag":140,"props":6759,"children":6761},{"className":6760},[],[6762],{"type":29,"value":6763},"DN",{"type":29,"value":6765}," uniqueness (applicable to small-scale CAs).",{"type":23,"tag":211,"props":6767,"children":6768},{},[6769,6777],{"type":23,"tag":233,"props":6770,"children":6771},{},[6772],{"type":23,"tag":4453,"props":6773,"children":6774},{},[6775],{"type":29,"value":6776},"Enforce unique Subject DN SerialNumber",{"type":23,"tag":233,"props":6778,"children":6779},{},[6780],{"type":29,"value":6781},"❌ Applicable only to large-scale CAs (not required for CAs with fewer than 20 certificates).",{"type":23,"tag":211,"props":6783,"children":6784},{},[6785,6793],{"type":23,"tag":233,"props":6786,"children":6787},{},[6788],{"type":23,"tag":4453,"props":6789,"children":6790},{},[6791],{"type":29,"value":6792},"Use Certificate Request History",{"type":23,"tag":233,"props":6794,"children":6795},{},[6796],{"type":29,"value":6797},"❌ Records certificate request history (not required for the root CA).",{"type":23,"tag":211,"props":6799,"children":6800},{},[6801,6809],{"type":23,"tag":233,"props":6802,"children":6803},{},[6804],{"type":23,"tag":4453,"props":6805,"children":6806},{},[6807],{"type":29,"value":6808},"Use User Storage",{"type":23,"tag":233,"props":6810,"children":6811},{},[6812],{"type":29,"value":6813},"✅ Stores user information.",{"type":23,"tag":211,"props":6815,"children":6816},{},[6817,6825],{"type":23,"tag":233,"props":6818,"children":6819},{},[6820],{"type":23,"tag":4453,"props":6821,"children":6822},{},[6823],{"type":29,"value":6824},"Use Certificate Storage",{"type":23,"tag":233,"props":6826,"children":6827},{},[6828],{"type":29,"value":6829},"✅ Stores issued certificates.",{"type":23,"tag":4461,"props":6831,"children":6832},{},[],{"type":23,"tag":4550,"props":6834,"children":6836},{"id":6835},"_3️⃣-ca-certificate-data",[6837],{"type":29,"value":6838},"3️⃣ CA certificate data",{"type":23,"tag":203,"props":6840,"children":6841},{},[6842,6862],{"type":23,"tag":207,"props":6843,"children":6844},{},[6845],{"type":23,"tag":211,"props":6846,"children":6847},{},[6848,6855],{"type":23,"tag":215,"props":6849,"children":6850},{},[6851],{"type":23,"tag":4453,"props":6852,"children":6853},{},[6854],{"type":29,"value":6503},{"type":23,"tag":215,"props":6856,"children":6857},{},[6858],{"type":23,"tag":4453,"props":6859,"children":6860},{},[6861],{"type":29,"value":6511},{"type":23,"tag":226,"props":6863,"children":6864},{},[6865,6886,6909,6932,6955,6970,6986,7002,7018,7041,7064,7080],{"type":23,"tag":211,"props":6866,"children":6867},{},[6868,6876],{"type":23,"tag":233,"props":6869,"children":6870},{},[6871],{"type":23,"tag":4453,"props":6872,"children":6873},{},[6874],{"type":29,"value":6875},"Subject DN",{"type":23,"tag":233,"props":6877,"children":6878},{},[6879,6880],{"type":29,"value":5969},{"type":23,"tag":140,"props":6881,"children":6883},{"className":6882},[],[6884],{"type":29,"value":6885},"CN=test EnterpriseIT Root CA",{"type":23,"tag":211,"props":6887,"children":6888},{},[6889,6897],{"type":23,"tag":233,"props":6890,"children":6891},{},[6892],{"type":23,"tag":4453,"props":6893,"children":6894},{},[6895],{"type":29,"value":6896},"Signed By",{"type":23,"tag":233,"props":6898,"children":6899},{},[6900,6901,6907],{"type":29,"value":5969},{"type":23,"tag":140,"props":6902,"children":6904},{"className":6903},[],[6905],{"type":29,"value":6906},"Self Signed",{"type":29,"value":6908},"; Root CA must be self-signed.",{"type":23,"tag":211,"props":6910,"children":6911},{},[6912,6920],{"type":23,"tag":233,"props":6913,"children":6914},{},[6915],{"type":23,"tag":4453,"props":6916,"children":6917},{},[6918],{"type":29,"value":6919},"Certificate Profile",{"type":23,"tag":233,"props":6921,"children":6922},{},[6923,6924,6930],{"type":29,"value":5969},{"type":23,"tag":140,"props":6925,"children":6927},{"className":6926},[],[6928],{"type":29,"value":6929},"ITROOTCA_profile",{"type":29,"value":6931},"; Select the cloned root CA.   This parameter can be modified.",{"type":23,"tag":211,"props":6933,"children":6934},{},[6935,6943],{"type":23,"tag":233,"props":6936,"children":6937},{},[6938],{"type":23,"tag":4453,"props":6939,"children":6940},{},[6941],{"type":29,"value":6942},"Validity",{"type":23,"tag":233,"props":6944,"children":6945},{},[6946,6947,6953],{"type":29,"value":5969},{"type":23,"tag":140,"props":6948,"children":6950},{"className":6949},[],[6951],{"type":29,"value":6952},"20y",{"type":29,"value":6954},"; The certificate validity period is 20 years.",{"type":23,"tag":211,"props":6956,"children":6957},{},[6958,6966],{"type":23,"tag":233,"props":6959,"children":6960},{},[6961],{"type":23,"tag":4453,"props":6962,"children":6963},{},[6964],{"type":29,"value":6965},"Subject Alternative Name",{"type":23,"tag":233,"props":6967,"children":6968},{},[6969],{"type":29,"value":6741},{"type":23,"tag":211,"props":6971,"children":6972},{},[6973,6981],{"type":23,"tag":233,"props":6974,"children":6975},{},[6976],{"type":23,"tag":4453,"props":6977,"children":6978},{},[6979],{"type":29,"value":6980},"Certificate Policy OID",{"type":23,"tag":233,"props":6982,"children":6983},{},[6984],{"type":29,"value":6985},"❌ (Optional) By default, this parameter is left blank.",{"type":23,"tag":211,"props":6987,"children":6988},{},[6989,6997],{"type":23,"tag":233,"props":6990,"children":6991},{},[6992],{"type":23,"tag":4453,"props":6993,"children":6994},{},[6995],{"type":29,"value":6996},"Use UTF-8 in policy notice text",{"type":23,"tag":233,"props":6998,"children":6999},{},[7000],{"type":29,"value":7001},"✅ Ensures international character support.",{"type":23,"tag":211,"props":7003,"children":7004},{},[7005,7013],{"type":23,"tag":233,"props":7006,"children":7007},{},[7008],{"type":23,"tag":4453,"props":7009,"children":7010},{},[7011],{"type":29,"value":7012},"PrintableString encoding in DN",{"type":23,"tag":233,"props":7014,"children":7015},{},[7016],{"type":29,"value":7017},"❌ Do not select this parameter to avoid affecting internationalization.",{"type":23,"tag":211,"props":7019,"children":7020},{},[7021,7029],{"type":23,"tag":233,"props":7022,"children":7023},{},[7024],{"type":23,"tag":4453,"props":7025,"children":7026},{},[7027],{"type":29,"value":7028},"LDAP DN order",{"type":23,"tag":233,"props":7030,"children":7031},{},[7032,7034,7039],{"type":29,"value":7033},"✅ Ensures that ",{"type":23,"tag":140,"props":7035,"children":7037},{"className":7036},[],[7038],{"type":29,"value":6763},{"type":29,"value":7040}," is sorted according to the LDAP specifications.",{"type":23,"tag":211,"props":7042,"children":7043},{},[7044,7052],{"type":23,"tag":233,"props":7045,"children":7046},{},[7047],{"type":23,"tag":4453,"props":7048,"children":7049},{},[7050],{"type":29,"value":7051},"Serial Number Octet Size",{"type":23,"tag":233,"props":7053,"children":7054},{},[7055,7056,7062],{"type":29,"value":5969},{"type":23,"tag":140,"props":7057,"children":7059},{"className":7058},[],[7060],{"type":29,"value":7061},"20",{"type":29,"value":7063},"; 20-byte is recommended to ensure uniqueness.",{"type":23,"tag":211,"props":7065,"children":7066},{},[7067,7075],{"type":23,"tag":233,"props":7068,"children":7069},{},[7070],{"type":23,"tag":4453,"props":7071,"children":7072},{},[7073],{"type":29,"value":7074},"Name Constraints, Permitted",{"type":23,"tag":233,"props":7076,"children":7077},{},[7078],{"type":29,"value":7079},"❌ Disabled for the root CA. Leave this parameter empty.",{"type":23,"tag":211,"props":7081,"children":7082},{},[7083,7091],{"type":23,"tag":233,"props":7084,"children":7085},{},[7086],{"type":23,"tag":4453,"props":7087,"children":7088},{},[7089],{"type":29,"value":7090},"Name Constraints, Excluded",{"type":23,"tag":233,"props":7092,"children":7093},{},[7094],{"type":29,"value":7079},{"type":23,"tag":4461,"props":7096,"children":7097},{},[],{"type":23,"tag":4550,"props":7099,"children":7101},{"id":7100},"_4️⃣-crl-configuration",[7102],{"type":29,"value":7103},"4️⃣ CRL configuration",{"type":23,"tag":203,"props":7105,"children":7106},{},[7107,7127],{"type":23,"tag":207,"props":7108,"children":7109},{},[7110],{"type":23,"tag":211,"props":7111,"children":7112},{},[7113,7120],{"type":23,"tag":215,"props":7114,"children":7115},{},[7116],{"type":23,"tag":4453,"props":7117,"children":7118},{},[7119],{"type":29,"value":6503},{"type":23,"tag":215,"props":7121,"children":7122},{},[7123],{"type":23,"tag":4453,"props":7124,"children":7125},{},[7126],{"type":29,"value":6511},{"type":23,"tag":226,"props":7128,"children":7129},{},[7130,7146,7170,7192,7208,7224,7240,7256,7279,7308,7331,7354,7370,7386],{"type":23,"tag":211,"props":7131,"children":7132},{},[7133,7141],{"type":23,"tag":233,"props":7134,"children":7135},{},[7136],{"type":23,"tag":4453,"props":7137,"children":7138},{},[7139],{"type":29,"value":7140},"Microsoft CA Compatibility Mode",{"type":23,"tag":233,"props":7142,"children":7143},{},[7144],{"type":29,"value":7145},"❌ Disabled for the root CA. This parameter is applicable only to Windows AD CS.",{"type":23,"tag":211,"props":7147,"children":7148},{},[7149,7157],{"type":23,"tag":233,"props":7150,"children":7151},{},[7152],{"type":23,"tag":4453,"props":7153,"children":7154},{},[7155],{"type":29,"value":7156},"Authority Key ID",{"type":23,"tag":233,"props":7158,"children":7159},{},[7160,7162,7168],{"type":29,"value":7161},"✅ Enabled and marked as ",{"type":23,"tag":140,"props":7163,"children":7165},{"className":7164},[],[7166],{"type":29,"value":7167},"Critical",{"type":29,"value":7169},". This parameter is used to identify the CRL issuer. It is recommended that it be enabled for the root CA and intermediate CA.",{"type":23,"tag":211,"props":7171,"children":7172},{},[7173,7181],{"type":23,"tag":233,"props":7174,"children":7175},{},[7176],{"type":23,"tag":4453,"props":7177,"children":7178},{},[7179],{"type":29,"value":7180},"CRL Number",{"type":23,"tag":233,"props":7182,"children":7183},{},[7184,7185,7190],{"type":29,"value":7161},{"type":23,"tag":140,"props":7186,"children":7188},{"className":7187},[],[7189],{"type":29,"value":7167},{"type":29,"value":7191},". This parameter is used to ensure that the CRL version is unique. It is recommended that it be enabled for the root CA and intermediate CA.",{"type":23,"tag":211,"props":7193,"children":7194},{},[7195,7203],{"type":23,"tag":233,"props":7196,"children":7197},{},[7198],{"type":23,"tag":4453,"props":7199,"children":7200},{},[7201],{"type":29,"value":7202},"Issuing Distribution Point on CRLs",{"type":23,"tag":233,"props":7204,"children":7205},{},[7206],{"type":29,"value":7207},"❌ Disabled for the root CA. This parameter is applicable only to large-scale CAs with hierarchical CRL structures.",{"type":23,"tag":211,"props":7209,"children":7210},{},[7211,7219],{"type":23,"tag":233,"props":7212,"children":7213},{},[7214],{"type":23,"tag":4453,"props":7215,"children":7216},{},[7217],{"type":29,"value":7218},"CA issuer URI",{"type":23,"tag":233,"props":7220,"children":7221},{},[7222],{"type":29,"value":7223},"❌ Left empty. Users provide this URI during final certificate download stage.",{"type":23,"tag":211,"props":7225,"children":7226},{},[7227,7235],{"type":23,"tag":233,"props":7228,"children":7229},{},[7230],{"type":23,"tag":4453,"props":7231,"children":7232},{},[7233],{"type":29,"value":7234},"Keep expired certificates on CRL",{"type":23,"tag":233,"props":7236,"children":7237},{},[7238],{"type":29,"value":7239},"❌ Disabled for the root CA. Determine if this parameter should be enabled for the intermediate CA based on actual requirements. After this parameter is enabled, the certificate is still displayed in the CRL even if it expires.",{"type":23,"tag":211,"props":7241,"children":7242},{},[7243,7251],{"type":23,"tag":233,"props":7244,"children":7245},{},[7246],{"type":23,"tag":4453,"props":7247,"children":7248},{},[7249],{"type":29,"value":7250},"Use CRL partitions",{"type":23,"tag":233,"props":7252,"children":7253},{},[7254],{"type":29,"value":7255},"❌ Not required for the root CA due to its low load. This parameter is applicable to CA that manages a large number of certificates.",{"type":23,"tag":211,"props":7257,"children":7258},{},[7259,7267],{"type":23,"tag":233,"props":7260,"children":7261},{},[7262],{"type":23,"tag":4453,"props":7263,"children":7264},{},[7265],{"type":29,"value":7266},"CRL Expire Period",{"type":23,"tag":233,"props":7268,"children":7269},{},[7270,7271,7277],{"type":29,"value":5969},{"type":23,"tag":140,"props":7272,"children":7274},{"className":7273},[],[7275],{"type":29,"value":7276},"30d",{"type":29,"value":7278},". Set the period to a longer one for the root CA and to a shorter one for the intermediate CA.",{"type":23,"tag":211,"props":7280,"children":7281},{},[7282,7290],{"type":23,"tag":233,"props":7283,"children":7284},{},[7285],{"type":23,"tag":4453,"props":7286,"children":7287},{},[7288],{"type":29,"value":7289},"CRL Issue Interval",{"type":23,"tag":233,"props":7291,"children":7292},{},[7293,7294,7300,7302,7307],{"type":29,"value":5969},{"type":23,"tag":140,"props":7295,"children":7297},{"className":7296},[],[7298],{"type":29,"value":7299},"7d",{"type":29,"value":7301},". Periodically updates the CRL. It is recommended that the active CA use ",{"type":23,"tag":140,"props":7303,"children":7305},{"className":7304},[],[7306],{"type":29,"value":7299},{"type":29,"value":52},{"type":23,"tag":211,"props":7309,"children":7310},{},[7311,7319],{"type":23,"tag":233,"props":7312,"children":7313},{},[7314],{"type":23,"tag":4453,"props":7315,"children":7316},{},[7317],{"type":29,"value":7318},"CRL Overlap Time",{"type":23,"tag":233,"props":7320,"children":7321},{},[7322,7323,7329],{"type":29,"value":5969},{"type":23,"tag":140,"props":7324,"children":7326},{"className":7325},[],[7327],{"type":29,"value":7328},"12h",{"type":29,"value":7330},". The old CRL and new CRL overlap for 12 hours to prevent certificate verification failures.",{"type":23,"tag":211,"props":7332,"children":7333},{},[7334,7342],{"type":23,"tag":233,"props":7335,"children":7336},{},[7337],{"type":23,"tag":4453,"props":7338,"children":7339},{},[7340],{"type":29,"value":7341},"Delta CRL Period",{"type":23,"tag":233,"props":7343,"children":7344},{},[7345,7346,7352],{"type":29,"value":6605},{"type":23,"tag":140,"props":7347,"children":7349},{"className":7348},[],[7350],{"type":29,"value":7351},"0m",{"type":29,"value":7353},". Delta CRL is not used for the root CA. It is enabled only for CAs that require high real-time performance.",{"type":23,"tag":211,"props":7355,"children":7356},{},[7357,7365],{"type":23,"tag":233,"props":7358,"children":7359},{},[7360],{"type":23,"tag":4453,"props":7361,"children":7362},{},[7363],{"type":29,"value":7364},"Generate CRL Upon Revocation",{"type":23,"tag":233,"props":7366,"children":7367},{},[7368],{"type":29,"value":7369},"❌ Disabled for the root CA, and enabled for the intermediate CA as required. A new CRL is generated immediately after a certificate is revoked.",{"type":23,"tag":211,"props":7371,"children":7372},{},[7373,7381],{"type":23,"tag":233,"props":7374,"children":7375},{},[7376],{"type":23,"tag":4453,"props":7377,"children":7378},{},[7379],{"type":29,"value":7380},"Allow changing revocation reason",{"type":23,"tag":233,"props":7382,"children":7383},{},[7384],{"type":29,"value":7385},"✅ Enabled. This parameter allows to change the reason for certificate revocation. It is applicable to all CAs.",{"type":23,"tag":211,"props":7387,"children":7388},{},[7389,7397],{"type":23,"tag":233,"props":7390,"children":7391},{},[7392],{"type":23,"tag":4453,"props":7393,"children":7394},{},[7395],{"type":29,"value":7396},"Allow invalidity date",{"type":23,"tag":233,"props":7398,"children":7399},{},[7400],{"type":29,"value":7401},"✅ Enabled. This parameter allows to set the certificate invalidity date. It is applicable to all CAs.",{"type":23,"tag":4461,"props":7403,"children":7404},{},[],{"type":23,"tag":4550,"props":7406,"children":7408},{"id":7407},"_5️⃣-approval-settings",[7409],{"type":29,"value":7410},"5️⃣ Approval settings",{"type":23,"tag":203,"props":7412,"children":7413},{},[7414,7434],{"type":23,"tag":207,"props":7415,"children":7416},{},[7417],{"type":23,"tag":211,"props":7418,"children":7419},{},[7420,7427],{"type":23,"tag":215,"props":7421,"children":7422},{},[7423],{"type":23,"tag":4453,"props":7424,"children":7425},{},[7426],{"type":29,"value":6503},{"type":23,"tag":215,"props":7428,"children":7429},{},[7430],{"type":23,"tag":4453,"props":7431,"children":7432},{},[7433],{"type":29,"value":6511},{"type":23,"tag":226,"props":7435,"children":7436},{},[7437,7460,7482,7504],{"type":23,"tag":211,"props":7438,"children":7439},{},[7440,7448],{"type":23,"tag":233,"props":7441,"children":7442},{},[7443],{"type":23,"tag":4453,"props":7444,"children":7445},{},[7446],{"type":29,"value":7447},"Add\u002FEdit End Entity",{"type":23,"tag":233,"props":7449,"children":7450},{},[7451,7453,7458],{"type":29,"value":7452},"❌",{"type":23,"tag":140,"props":7454,"children":7456},{"className":7455},[],[7457],{"type":29,"value":6611},{"type":29,"value":7459},". Root CA does not manage end entities.",{"type":23,"tag":211,"props":7461,"children":7462},{},[7463,7471],{"type":23,"tag":233,"props":7464,"children":7465},{},[7466],{"type":23,"tag":4453,"props":7467,"children":7468},{},[7469],{"type":29,"value":7470},"Key Recovery",{"type":23,"tag":233,"props":7472,"children":7473},{},[7474,7475,7480],{"type":29,"value":7452},{"type":23,"tag":140,"props":7476,"children":7478},{"className":7477},[],[7479],{"type":29,"value":6611},{"type":29,"value":7481},". Root CA does not provide key recovery.",{"type":23,"tag":211,"props":7483,"children":7484},{},[7485,7493],{"type":23,"tag":233,"props":7486,"children":7487},{},[7488],{"type":23,"tag":4453,"props":7489,"children":7490},{},[7491],{"type":29,"value":7492},"Revocation",{"type":23,"tag":233,"props":7494,"children":7495},{},[7496,7497,7502],{"type":29,"value":7452},{"type":23,"tag":140,"props":7498,"children":7500},{"className":7499},[],[7501],{"type":29,"value":6611},{"type":29,"value":7503},". Root CA rarely revokes its own certificates.",{"type":23,"tag":211,"props":7505,"children":7506},{},[7507,7515],{"type":23,"tag":233,"props":7508,"children":7509},{},[7510],{"type":23,"tag":4453,"props":7511,"children":7512},{},[7513],{"type":29,"value":7514},"CA Service Activation",{"type":23,"tag":233,"props":7516,"children":7517},{},[7518,7519,7524],{"type":29,"value":7452},{"type":23,"tag":140,"props":7520,"children":7522},{"className":7521},[],[7523],{"type":29,"value":6611},{"type":29,"value":7525},". Root CA is manually activated.",{"type":23,"tag":4461,"props":7527,"children":7528},{},[],{"type":23,"tag":4550,"props":7530,"children":7532},{"id":7531},"_6️⃣-other-data",[7533],{"type":29,"value":7534},"6️⃣ Other data",{"type":23,"tag":203,"props":7536,"children":7537},{},[7538,7558],{"type":23,"tag":207,"props":7539,"children":7540},{},[7541],{"type":23,"tag":211,"props":7542,"children":7543},{},[7544,7551],{"type":23,"tag":215,"props":7545,"children":7546},{},[7547],{"type":23,"tag":4453,"props":7548,"children":7549},{},[7550],{"type":29,"value":6503},{"type":23,"tag":215,"props":7552,"children":7553},{},[7554],{"type":23,"tag":4453,"props":7555,"children":7556},{},[7557],{"type":29,"value":6511},{"type":23,"tag":226,"props":7559,"children":7560},{},[7561,7584,7600,7623],{"type":23,"tag":211,"props":7562,"children":7563},{},[7564,7572],{"type":23,"tag":233,"props":7565,"children":7566},{},[7567],{"type":23,"tag":4453,"props":7568,"children":7569},{},[7570],{"type":29,"value":7571},"Validators",{"type":23,"tag":233,"props":7573,"children":7574},{},[7575,7576,7582],{"type":29,"value":5969},{"type":23,"tag":140,"props":7577,"children":7579},{"className":7578},[],[7580],{"type":29,"value":7581},"Finish User",{"type":29,"value":7583},". Enable the certificate verification policy.",{"type":23,"tag":211,"props":7585,"children":7586},{},[7587,7595],{"type":23,"tag":233,"props":7588,"children":7589},{},[7590],{"type":23,"tag":4453,"props":7591,"children":7592},{},[7593],{"type":29,"value":7594},"CMP RA Authentication Secret",{"type":23,"tag":233,"props":7596,"children":7597},{},[7598],{"type":29,"value":7599},"❌ Leave this parameter empty. This parameter needs to be configured only when the CMP protocol is used.",{"type":23,"tag":211,"props":7601,"children":7602},{},[7603,7611],{"type":23,"tag":233,"props":7604,"children":7605},{},[7606],{"type":23,"tag":4453,"props":7607,"children":7608},{},[7609],{"type":29,"value":7610},"Monitor if CA active (healthcheck)",{"type":23,"tag":233,"props":7612,"children":7613},{},[7614,7615,7621],{"type":29,"value":5969},{"type":23,"tag":140,"props":7616,"children":7618},{"className":7617},[],[7619],{"type":29,"value":7620},"Activate",{"type":29,"value":7622},". Enable CA running monitoring, which applies to all CAs.",{"type":23,"tag":211,"props":7624,"children":7625},{},[7626,7634],{"type":23,"tag":233,"props":7627,"children":7628},{},[7629],{"type":23,"tag":4453,"props":7630,"children":7631},{},[7632],{"type":29,"value":7633},"Request Processor",{"type":23,"tag":233,"props":7635,"children":7636},{},[7637,7638,7643],{"type":29,"value":6605},{"type":23,"tag":140,"props":7639,"children":7641},{"className":7640},[],[7642],{"type":29,"value":6611},{"type":29,"value":7644},". Root CA usually does not need to process external requests.",{"type":23,"tag":4461,"props":7646,"children":7647},{},[],{"type":23,"tag":4550,"props":7649,"children":7651},{"id":7650},"_7️⃣-creationrenewal-of-externally-signed-cas",[7652],{"type":29,"value":7653},"7️⃣ Creation\u002FRenewal of Externally Signed CAs",{"type":23,"tag":203,"props":7655,"children":7656},{},[7657,7677],{"type":23,"tag":207,"props":7658,"children":7659},{},[7660],{"type":23,"tag":211,"props":7661,"children":7662},{},[7663,7670],{"type":23,"tag":215,"props":7664,"children":7665},{},[7666],{"type":23,"tag":4453,"props":7667,"children":7668},{},[7669],{"type":29,"value":6503},{"type":23,"tag":215,"props":7671,"children":7672},{},[7673],{"type":23,"tag":4453,"props":7674,"children":7675},{},[7676],{"type":29,"value":6511},{"type":23,"tag":226,"props":7678,"children":7679},{},[7680,7696],{"type":23,"tag":211,"props":7681,"children":7682},{},[7683,7691],{"type":23,"tag":233,"props":7684,"children":7685},{},[7686],{"type":23,"tag":4453,"props":7687,"children":7688},{},[7689],{"type":29,"value":7690},"Renew CA",{"type":23,"tag":233,"props":7692,"children":7693},{},[7694],{"type":29,"value":7695},"❌ Creates a new root CA instead of regenerating the key and re-signing the existing CA. This avoids problems caused by root CA certificates with the same name.",{"type":23,"tag":211,"props":7697,"children":7698},{},[7699,7707],{"type":23,"tag":233,"props":7700,"children":7701},{},[7702],{"type":23,"tag":4453,"props":7703,"children":7704},{},[7705],{"type":29,"value":7706},"CA Chain Certificates",{"type":23,"tag":233,"props":7708,"children":7709},{},[7710],{"type":29,"value":7711},"✅ Uploads the certificate chain file (in PEM\u002FDER format) only when the CA is signed externally. If the root CA has been installed locally, you do not need to upload the file.",{"type":23,"tag":4461,"props":7713,"children":7714},{},[],{"type":23,"tag":4550,"props":7716,"children":7718},{"id":7717},"_8️⃣-ca-creation",[7719],{"type":29,"value":7720},"8️⃣ CA Creation",{"type":23,"tag":37,"props":7722,"children":7723},{},[7724,7726,7730],{"type":29,"value":7725},"After confirming all parameters are correct, click ",{"type":23,"tag":4453,"props":7727,"children":7728},{},[7729],{"type":29,"value":6447},{"type":29,"value":7731}," to generate a CA.",{"type":23,"tag":37,"props":7733,"children":7734},{},[7735],{"type":23,"tag":4453,"props":7736,"children":7737},{},[7738],{"type":29,"value":7739},"1. Download and verify the root CA certificate.",{"type":23,"tag":37,"props":7741,"children":7742},{},[7743],{"type":29,"value":7744},"Run the following OpenSSL commands to verify the certificate format and validity:",{"type":23,"tag":341,"props":7746,"children":7750},{"code":7747,"language":7748,"meta":9,"className":7749,"style":9},"# Verify PEM certificates.\nopenssl x509 -in rootca.pem -text -noout\n\n# Verify DER certificates.\nopenssl x509 -in rootca.der -inform DER -text -noout\n\n# Check the certificate's SHA256 fingerprint information.\nopenssl x509 -noout -fingerprint -sha256 -in rootca.pem\n\n# Verify the self-signed certificate validity.\nopenssl verify -CAfile rootca.pem rootca.pem\n","sh","language-sh shiki shiki-themes github-light github-dark monokai",[7751],{"type":23,"tag":140,"props":7752,"children":7753},{"__ignoreMap":9},[7754,7762,7795,7802,7810,7848,7855,7863,7898,7905,7913],{"type":23,"tag":351,"props":7755,"children":7756},{"class":353,"line":354},[7757],{"type":23,"tag":351,"props":7758,"children":7759},{"style":5048},[7760],{"type":29,"value":7761},"# Verify PEM certificates.\n",{"type":23,"tag":351,"props":7763,"children":7764},{"class":353,"line":364},[7765,7770,7775,7780,7785,7790],{"type":23,"tag":351,"props":7766,"children":7767},{"style":4575},[7768],{"type":29,"value":7769},"openssl",{"type":23,"tag":351,"props":7771,"children":7772},{"style":4581},[7773],{"type":29,"value":7774}," x509",{"type":23,"tag":351,"props":7776,"children":7777},{"style":696},[7778],{"type":29,"value":7779}," -in",{"type":23,"tag":351,"props":7781,"children":7782},{"style":4581},[7783],{"type":29,"value":7784}," rootca.pem",{"type":23,"tag":351,"props":7786,"children":7787},{"style":696},[7788],{"type":29,"value":7789}," -text",{"type":23,"tag":351,"props":7791,"children":7792},{"style":696},[7793],{"type":29,"value":7794}," -noout\n",{"type":23,"tag":351,"props":7796,"children":7797},{"class":353,"line":379},[7798],{"type":23,"tag":351,"props":7799,"children":7800},{"emptyLinePlaceholder":5057},[7801],{"type":29,"value":5060},{"type":23,"tag":351,"props":7803,"children":7804},{"class":353,"line":392},[7805],{"type":23,"tag":351,"props":7806,"children":7807},{"style":5048},[7808],{"type":29,"value":7809},"# Verify DER certificates.\n",{"type":23,"tag":351,"props":7811,"children":7812},{"class":353,"line":406},[7813,7817,7821,7825,7830,7835,7840,7844],{"type":23,"tag":351,"props":7814,"children":7815},{"style":4575},[7816],{"type":29,"value":7769},{"type":23,"tag":351,"props":7818,"children":7819},{"style":4581},[7820],{"type":29,"value":7774},{"type":23,"tag":351,"props":7822,"children":7823},{"style":696},[7824],{"type":29,"value":7779},{"type":23,"tag":351,"props":7826,"children":7827},{"style":4581},[7828],{"type":29,"value":7829}," rootca.der",{"type":23,"tag":351,"props":7831,"children":7832},{"style":696},[7833],{"type":29,"value":7834}," -inform",{"type":23,"tag":351,"props":7836,"children":7837},{"style":4581},[7838],{"type":29,"value":7839}," DER",{"type":23,"tag":351,"props":7841,"children":7842},{"style":696},[7843],{"type":29,"value":7789},{"type":23,"tag":351,"props":7845,"children":7846},{"style":696},[7847],{"type":29,"value":7794},{"type":23,"tag":351,"props":7849,"children":7850},{"class":353,"line":421},[7851],{"type":23,"tag":351,"props":7852,"children":7853},{"emptyLinePlaceholder":5057},[7854],{"type":29,"value":5060},{"type":23,"tag":351,"props":7856,"children":7857},{"class":353,"line":434},[7858],{"type":23,"tag":351,"props":7859,"children":7860},{"style":5048},[7861],{"type":29,"value":7862},"# Check the certificate's SHA256 fingerprint information.\n",{"type":23,"tag":351,"props":7864,"children":7865},{"class":353,"line":447},[7866,7870,7874,7879,7884,7889,7893],{"type":23,"tag":351,"props":7867,"children":7868},{"style":4575},[7869],{"type":29,"value":7769},{"type":23,"tag":351,"props":7871,"children":7872},{"style":4581},[7873],{"type":29,"value":7774},{"type":23,"tag":351,"props":7875,"children":7876},{"style":696},[7877],{"type":29,"value":7878}," -noout",{"type":23,"tag":351,"props":7880,"children":7881},{"style":696},[7882],{"type":29,"value":7883}," -fingerprint",{"type":23,"tag":351,"props":7885,"children":7886},{"style":696},[7887],{"type":29,"value":7888}," -sha256",{"type":23,"tag":351,"props":7890,"children":7891},{"style":696},[7892],{"type":29,"value":7779},{"type":23,"tag":351,"props":7894,"children":7895},{"style":4581},[7896],{"type":29,"value":7897}," rootca.pem\n",{"type":23,"tag":351,"props":7899,"children":7900},{"class":353,"line":460},[7901],{"type":23,"tag":351,"props":7902,"children":7903},{"emptyLinePlaceholder":5057},[7904],{"type":29,"value":5060},{"type":23,"tag":351,"props":7906,"children":7907},{"class":353,"line":473},[7908],{"type":23,"tag":351,"props":7909,"children":7910},{"style":5048},[7911],{"type":29,"value":7912},"# Verify the self-signed certificate validity.\n",{"type":23,"tag":351,"props":7914,"children":7915},{"class":353,"line":486},[7916,7920,7925,7930,7934],{"type":23,"tag":351,"props":7917,"children":7918},{"style":4575},[7919],{"type":29,"value":7769},{"type":23,"tag":351,"props":7921,"children":7922},{"style":4581},[7923],{"type":29,"value":7924}," verify",{"type":23,"tag":351,"props":7926,"children":7927},{"style":696},[7928],{"type":29,"value":7929}," -CAfile",{"type":23,"tag":351,"props":7931,"children":7932},{"style":4581},[7933],{"type":29,"value":7784},{"type":23,"tag":351,"props":7935,"children":7936},{"style":4581},[7937],{"type":29,"value":7897},{"type":23,"tag":37,"props":7939,"children":7940},{},[7941],{"type":23,"tag":4453,"props":7942,"children":7943},{},[7944],{"type":29,"value":7945},"2. Deploy and verify the CRL.",{"type":23,"tag":37,"props":7947,"children":7948},{},[7949],{"type":29,"value":7950},"If the CRL URL is configured, run the following command:",{"type":23,"tag":341,"props":7952,"children":7954},{"code":7953,"language":7748,"meta":9,"className":7749,"style":9},"# Verify the CRL file.\nopenssl crl -in rootca.crl -text -noout\n",[7955],{"type":23,"tag":140,"props":7956,"children":7957},{"__ignoreMap":9},[7958,7966],{"type":23,"tag":351,"props":7959,"children":7960},{"class":353,"line":354},[7961],{"type":23,"tag":351,"props":7962,"children":7963},{"style":5048},[7964],{"type":29,"value":7965},"# Verify the CRL file.\n",{"type":23,"tag":351,"props":7967,"children":7968},{"class":353,"line":364},[7969,7973,7978,7982,7987,7991],{"type":23,"tag":351,"props":7970,"children":7971},{"style":4575},[7972],{"type":29,"value":7769},{"type":23,"tag":351,"props":7974,"children":7975},{"style":4581},[7976],{"type":29,"value":7977}," crl",{"type":23,"tag":351,"props":7979,"children":7980},{"style":696},[7981],{"type":29,"value":7779},{"type":23,"tag":351,"props":7983,"children":7984},{"style":4581},[7985],{"type":29,"value":7986}," rootca.crl",{"type":23,"tag":351,"props":7988,"children":7989},{"style":696},[7990],{"type":29,"value":7789},{"type":23,"tag":351,"props":7992,"children":7993},{"style":696},[7994],{"type":29,"value":7794},{"type":23,"tag":37,"props":7996,"children":7997},{},[7998],{"type":29,"value":7999},"Ensure that the CRL can be accessed through the web.",{"type":23,"tag":37,"props":8001,"children":8002},{},[8003,8005,8010],{"type":29,"value":8004},"🚀 ",{"type":23,"tag":4453,"props":8006,"children":8007},{},[8008],{"type":29,"value":8009},"The root CA has been created and can be used to issue intermediate CAs!",{"type":29,"value":8011}," 🎉",{"type":23,"tag":4530,"props":8013,"children":8015},{"id":8014},"_57-creating-an-intermediate-ca-certificate",[8016],{"type":29,"value":8017},"5.7 Creating an Intermediate CA Certificate",{"type":23,"tag":4550,"props":8019,"children":8021},{"id":8020},"_1️⃣-ca-type-and-key-configuration-1",[8022],{"type":29,"value":6486},{"type":23,"tag":203,"props":8024,"children":8025},{},[8026,8040],{"type":23,"tag":207,"props":8027,"children":8028},{},[8029],{"type":23,"tag":211,"props":8030,"children":8031},{},[8032,8036],{"type":23,"tag":215,"props":8033,"children":8034},{},[8035],{"type":29,"value":6503},{"type":23,"tag":215,"props":8037,"children":8038},{},[8039],{"type":29,"value":6511},{"type":23,"tag":226,"props":8041,"children":8042},{},[8043,8060,8078,8095,8112,8129,8148],{"type":23,"tag":211,"props":8044,"children":8045},{},[8046,8050],{"type":23,"tag":233,"props":8047,"children":8048},{},[8049],{"type":29,"value":6525},{"type":23,"tag":233,"props":8051,"children":8052},{},[8053,8054,8059],{"type":29,"value":5969},{"type":23,"tag":140,"props":8055,"children":8057},{"className":8056},[],[8058],{"type":29,"value":6535},{"type":29,"value":6537},{"type":23,"tag":211,"props":8061,"children":8062},{},[8063,8067],{"type":23,"tag":233,"props":8064,"children":8065},{},[8066],{"type":29,"value":6291},{"type":23,"tag":233,"props":8068,"children":8069},{},[8070,8072,8077],{"type":29,"value":8071},"✅ Select the created Crypto Token, for example, ",{"type":23,"tag":140,"props":8073,"children":8075},{"className":8074},[],[8076],{"type":29,"value":6565},{"type":29,"value":52},{"type":23,"tag":211,"props":8079,"children":8080},{},[8081,8085],{"type":23,"tag":233,"props":8082,"children":8083},{},[8084],{"type":29,"value":6577},{"type":23,"tag":233,"props":8086,"children":8087},{},[8088,8089,8094],{"type":29,"value":5969},{"type":23,"tag":140,"props":8090,"children":8092},{"className":8091},[],[8093],{"type":29,"value":6587},{"type":29,"value":6589},{"type":23,"tag":211,"props":8096,"children":8097},{},[8098,8102],{"type":23,"tag":233,"props":8099,"children":8100},{},[8101],{"type":29,"value":6600},{"type":23,"tag":233,"props":8103,"children":8104},{},[8105,8106,8111],{"type":29,"value":6605},{"type":23,"tag":140,"props":8107,"children":8109},{"className":8108},[],[8110],{"type":29,"value":6611},{"type":29,"value":6613},{"type":23,"tag":211,"props":8113,"children":8114},{},[8115,8119],{"type":23,"tag":233,"props":8116,"children":8117},{},[8118],{"type":29,"value":6624},{"type":23,"tag":233,"props":8120,"children":8121},{},[8122,8123,8128],{"type":29,"value":5969},{"type":23,"tag":140,"props":8124,"children":8126},{"className":8125},[],[8127],{"type":29,"value":6634},{"type":29,"value":6636},{"type":23,"tag":211,"props":8130,"children":8131},{},[8132,8136],{"type":23,"tag":233,"props":8133,"children":8134},{},[8135],{"type":29,"value":6647},{"type":23,"tag":233,"props":8137,"children":8138},{},[8139,8140,8146],{"type":29,"value":5969},{"type":23,"tag":140,"props":8141,"children":8143},{"className":8142},[],[8144],{"type":29,"value":8145},"00001",{"type":29,"value":8147},"; Initial serial number, which should be different from that of the root CA.",{"type":23,"tag":211,"props":8149,"children":8150},{},[8151,8155],{"type":23,"tag":233,"props":8152,"children":8153},{},[8154],{"type":29,"value":6511},{"type":23,"tag":233,"props":8156,"children":8157},{},[8158],{"type":29,"value":8159},"✅ Intermediate CA description, including the purpose and management unit.",{"type":23,"tag":4461,"props":8161,"children":8162},{},[],{"type":23,"tag":4550,"props":8164,"children":8166},{"id":8165},"_2️⃣-certificate-policies-directives-1",[8167],{"type":29,"value":6683},{"type":23,"tag":203,"props":8169,"children":8170},{},[8171,8185],{"type":23,"tag":207,"props":8172,"children":8173},{},[8174],{"type":23,"tag":211,"props":8175,"children":8176},{},[8177,8181],{"type":23,"tag":215,"props":8178,"children":8179},{},[8180],{"type":29,"value":6503},{"type":23,"tag":215,"props":8182,"children":8183},{},[8184],{"type":29,"value":6511},{"type":23,"tag":226,"props":8186,"children":8187},{},[8188,8199,8211,8223,8235,8247,8258],{"type":23,"tag":211,"props":8189,"children":8190},{},[8191,8195],{"type":23,"tag":233,"props":8192,"children":8193},{},[8194],{"type":29,"value":6720},{"type":23,"tag":233,"props":8196,"children":8197},{},[8198],{"type":29,"value":6725},{"type":23,"tag":211,"props":8200,"children":8201},{},[8202,8206],{"type":23,"tag":233,"props":8203,"children":8204},{},[8205],{"type":29,"value":6736},{"type":23,"tag":233,"props":8207,"children":8208},{},[8209],{"type":29,"value":8210},"✅ Recommended to be enabled for intermediate CAs to ensure security.",{"type":23,"tag":211,"props":8212,"children":8213},{},[8214,8218],{"type":23,"tag":233,"props":8215,"children":8216},{},[8217],{"type":29,"value":6752},{"type":23,"tag":233,"props":8219,"children":8220},{},[8221],{"type":29,"value":8222},"✅ Ensures the DN to be unique.",{"type":23,"tag":211,"props":8224,"children":8225},{},[8226,8230],{"type":23,"tag":233,"props":8227,"children":8228},{},[8229],{"type":29,"value":6776},{"type":23,"tag":233,"props":8231,"children":8232},{},[8233],{"type":29,"value":8234},"❌ Not required when the number of certificates is fewer than 20.",{"type":23,"tag":211,"props":8236,"children":8237},{},[8238,8242],{"type":23,"tag":233,"props":8239,"children":8240},{},[8241],{"type":29,"value":6792},{"type":23,"tag":233,"props":8243,"children":8244},{},[8245],{"type":29,"value":8246},"✅ Records certificate request history.",{"type":23,"tag":211,"props":8248,"children":8249},{},[8250,8254],{"type":23,"tag":233,"props":8251,"children":8252},{},[8253],{"type":29,"value":6808},{"type":23,"tag":233,"props":8255,"children":8256},{},[8257],{"type":29,"value":6813},{"type":23,"tag":211,"props":8259,"children":8260},{},[8261,8265],{"type":23,"tag":233,"props":8262,"children":8263},{},[8264],{"type":29,"value":6824},{"type":23,"tag":233,"props":8266,"children":8267},{},[8268],{"type":29,"value":6829},{"type":23,"tag":4461,"props":8270,"children":8271},{},[],{"type":23,"tag":4550,"props":8273,"children":8275},{"id":8274},"_3️⃣-ca-certificate-data-1",[8276],{"type":29,"value":6838},{"type":23,"tag":203,"props":8278,"children":8279},{},[8280,8295],{"type":23,"tag":207,"props":8281,"children":8282},{},[8283],{"type":23,"tag":211,"props":8284,"children":8285},{},[8286,8290],{"type":23,"tag":215,"props":8287,"children":8288},{},[8289],{"type":29,"value":6503},{"type":23,"tag":215,"props":8291,"children":8292},{},[8293],{"type":29,"value":8294},"Description\u002FExample Value",{"type":23,"tag":226,"props":8296,"children":8297},{},[8298,8315,8334,8353,8372,8384,8396,8407,8418,8430,8448,8460],{"type":23,"tag":211,"props":8299,"children":8300},{},[8301,8305],{"type":23,"tag":233,"props":8302,"children":8303},{},[8304],{"type":29,"value":6875},{"type":23,"tag":233,"props":8306,"children":8307},{},[8308,8309],{"type":29,"value":5969},{"type":23,"tag":140,"props":8310,"children":8312},{"className":8311},[],[8313],{"type":29,"value":8314},"CN=test Intermediate CA  ",{"type":23,"tag":211,"props":8316,"children":8317},{},[8318,8322],{"type":23,"tag":233,"props":8319,"children":8320},{},[8321],{"type":29,"value":6896},{"type":23,"tag":233,"props":8323,"children":8324},{},[8325,8326,8332],{"type":29,"value":5969},{"type":23,"tag":140,"props":8327,"children":8329},{"className":8328},[],[8330],{"type":29,"value":8331},"test EnterpriseIT Root CA",{"type":29,"value":8333}," The intermediate CA must be signed by the root CA.",{"type":23,"tag":211,"props":8335,"children":8336},{},[8337,8341],{"type":23,"tag":233,"props":8338,"children":8339},{},[8340],{"type":29,"value":6919},{"type":23,"tag":233,"props":8342,"children":8343},{},[8344,8345,8351],{"type":29,"value":5969},{"type":23,"tag":140,"props":8346,"children":8348},{"className":8347},[],[8349],{"type":29,"value":8350},"INTERMEDIATE_CA_profile",{"type":29,"value":8352}," Configured for the intermediate CA after cloning.",{"type":23,"tag":211,"props":8354,"children":8355},{},[8356,8360],{"type":23,"tag":233,"props":8357,"children":8358},{},[8359],{"type":29,"value":6942},{"type":23,"tag":233,"props":8361,"children":8362},{},[8363,8364,8370],{"type":29,"value":5969},{"type":23,"tag":140,"props":8365,"children":8367},{"className":8366},[],[8368],{"type":29,"value":8369},"10y",{"type":29,"value":8371}," Generally, the validity period is 10 years, which is shorter than that of the root CA.",{"type":23,"tag":211,"props":8373,"children":8374},{},[8375,8379],{"type":23,"tag":233,"props":8376,"children":8377},{},[8378],{"type":29,"value":6965},{"type":23,"tag":233,"props":8380,"children":8381},{},[8382],{"type":29,"value":8383},"❌ Not required for the intermediate CA.",{"type":23,"tag":211,"props":8385,"children":8386},{},[8387,8391],{"type":23,"tag":233,"props":8388,"children":8389},{},[8390],{"type":29,"value":6980},{"type":23,"tag":233,"props":8392,"children":8393},{},[8394],{"type":29,"value":8395},"❌ Leave this parameter empty by default or enter a value as required.",{"type":23,"tag":211,"props":8397,"children":8398},{},[8399,8403],{"type":23,"tag":233,"props":8400,"children":8401},{},[8402],{"type":29,"value":6996},{"type":23,"tag":233,"props":8404,"children":8405},{},[8406],{"type":29,"value":7001},{"type":23,"tag":211,"props":8408,"children":8409},{},[8410,8414],{"type":23,"tag":233,"props":8411,"children":8412},{},[8413],{"type":29,"value":7012},{"type":23,"tag":233,"props":8415,"children":8416},{},[8417],{"type":29,"value":7017},{"type":23,"tag":211,"props":8419,"children":8420},{},[8421,8425],{"type":23,"tag":233,"props":8422,"children":8423},{},[8424],{"type":29,"value":7028},{"type":23,"tag":233,"props":8426,"children":8427},{},[8428],{"type":29,"value":8429},"✅ Arranges the DN according to LDAP specifications.",{"type":23,"tag":211,"props":8431,"children":8432},{},[8433,8437],{"type":23,"tag":233,"props":8434,"children":8435},{},[8436],{"type":29,"value":7051},{"type":23,"tag":233,"props":8438,"children":8439},{},[8440,8441,8446],{"type":29,"value":5969},{"type":23,"tag":140,"props":8442,"children":8444},{"className":8443},[],[8445],{"type":29,"value":7061},{"type":29,"value":8447}," 20-byte is recommended.",{"type":23,"tag":211,"props":8449,"children":8450},{},[8451,8455],{"type":23,"tag":233,"props":8452,"children":8453},{},[8454],{"type":29,"value":7074},{"type":23,"tag":233,"props":8456,"children":8457},{},[8458],{"type":29,"value":8459},"❌ Disabled by default. Leave this parameter empty.",{"type":23,"tag":211,"props":8461,"children":8462},{},[8463,8467],{"type":23,"tag":233,"props":8464,"children":8465},{},[8466],{"type":29,"value":7090},{"type":23,"tag":233,"props":8468,"children":8469},{},[8470],{"type":29,"value":8459},{"type":23,"tag":4461,"props":8472,"children":8473},{},[],{"type":23,"tag":4550,"props":8475,"children":8477},{"id":8476},"_4️⃣-crl-configuration-1",[8478],{"type":29,"value":7103},{"type":23,"tag":203,"props":8480,"children":8481},{},[8482,8496],{"type":23,"tag":207,"props":8483,"children":8484},{},[8485],{"type":23,"tag":211,"props":8486,"children":8487},{},[8488,8492],{"type":23,"tag":215,"props":8489,"children":8490},{},[8491],{"type":29,"value":6503},{"type":23,"tag":215,"props":8493,"children":8494},{},[8495],{"type":29,"value":6511},{"type":23,"tag":226,"props":8497,"children":8498},{},[8499,8511,8523,8534,8546,8558,8570,8582,8600,8619,8637,8655,8667,8679],{"type":23,"tag":211,"props":8500,"children":8501},{},[8502,8506],{"type":23,"tag":233,"props":8503,"children":8504},{},[8505],{"type":29,"value":7140},{"type":23,"tag":233,"props":8507,"children":8508},{},[8509],{"type":29,"value":8510},"❌ Disabled, typically. This parameter is used only in the Windows AD environment.",{"type":23,"tag":211,"props":8512,"children":8513},{},[8514,8518],{"type":23,"tag":233,"props":8515,"children":8516},{},[8517],{"type":29,"value":7156},{"type":23,"tag":233,"props":8519,"children":8520},{},[8521],{"type":29,"value":8522},"✅ Enabled and marked as Critical.",{"type":23,"tag":211,"props":8524,"children":8525},{},[8526,8530],{"type":23,"tag":233,"props":8527,"children":8528},{},[8529],{"type":29,"value":7180},{"type":23,"tag":233,"props":8531,"children":8532},{},[8533],{"type":29,"value":8522},{"type":23,"tag":211,"props":8535,"children":8536},{},[8537,8541],{"type":23,"tag":233,"props":8538,"children":8539},{},[8540],{"type":29,"value":7202},{"type":23,"tag":233,"props":8542,"children":8543},{},[8544],{"type":29,"value":8545},"❌ Disabled, typically.",{"type":23,"tag":211,"props":8547,"children":8548},{},[8549,8553],{"type":23,"tag":233,"props":8550,"children":8551},{},[8552],{"type":29,"value":7218},{"type":23,"tag":233,"props":8554,"children":8555},{},[8556],{"type":29,"value":8557},"❌ Leave this parameter empty or enter a download address as required.",{"type":23,"tag":211,"props":8559,"children":8560},{},[8561,8565],{"type":23,"tag":233,"props":8562,"children":8563},{},[8564],{"type":29,"value":7234},{"type":23,"tag":233,"props":8566,"children":8567},{},[8568],{"type":29,"value":8569},"❌ Recommended to be enabled for the intermediate CA and retain expired certificates. This parameter is disabled currently; otherwise, the CRL size will become large.",{"type":23,"tag":211,"props":8571,"children":8572},{},[8573,8577],{"type":23,"tag":233,"props":8574,"children":8575},{},[8576],{"type":29,"value":7250},{"type":23,"tag":233,"props":8578,"children":8579},{},[8580],{"type":29,"value":8581},"❌ Not required, typically.",{"type":23,"tag":211,"props":8583,"children":8584},{},[8585,8589],{"type":23,"tag":233,"props":8586,"children":8587},{},[8588],{"type":29,"value":7266},{"type":23,"tag":233,"props":8590,"children":8591},{},[8592,8593,8598],{"type":29,"value":5969},{"type":23,"tag":140,"props":8594,"children":8596},{"className":8595},[],[8597],{"type":29,"value":7299},{"type":29,"value":8599}," 7-day is recommended to ensure timely update.",{"type":23,"tag":211,"props":8601,"children":8602},{},[8603,8607],{"type":23,"tag":233,"props":8604,"children":8605},{},[8606],{"type":29,"value":7289},{"type":23,"tag":233,"props":8608,"children":8609},{},[8610,8611,8617],{"type":29,"value":5969},{"type":23,"tag":140,"props":8612,"children":8614},{"className":8613},[],[8615],{"type":29,"value":8616},"1d",{"type":29,"value":8618}," The CRL is issued every day to ensure timely update.",{"type":23,"tag":211,"props":8620,"children":8621},{},[8622,8626],{"type":23,"tag":233,"props":8623,"children":8624},{},[8625],{"type":29,"value":7318},{"type":23,"tag":233,"props":8627,"children":8628},{},[8629,8630,8635],{"type":29,"value":5969},{"type":23,"tag":140,"props":8631,"children":8633},{"className":8632},[],[8634],{"type":29,"value":7328},{"type":29,"value":8636}," The new CRL overlaps with the old CRL for 12 hours to ensure smooth transition.",{"type":23,"tag":211,"props":8638,"children":8639},{},[8640,8644],{"type":23,"tag":233,"props":8641,"children":8642},{},[8643],{"type":29,"value":7341},{"type":23,"tag":233,"props":8645,"children":8646},{},[8647,8648,8653],{"type":29,"value":6605},{"type":23,"tag":140,"props":8649,"children":8651},{"className":8650},[],[8652],{"type":29,"value":7351},{"type":29,"value":8654}," Delta CRL is not used.",{"type":23,"tag":211,"props":8656,"children":8657},{},[8658,8662],{"type":23,"tag":233,"props":8659,"children":8660},{},[8661],{"type":29,"value":7364},{"type":23,"tag":233,"props":8663,"children":8664},{},[8665],{"type":29,"value":8666},"✅ Enabled. The CRL is updated immediately after the certificate is revoked.",{"type":23,"tag":211,"props":8668,"children":8669},{},[8670,8674],{"type":23,"tag":233,"props":8671,"children":8672},{},[8673],{"type":29,"value":7380},{"type":23,"tag":233,"props":8675,"children":8676},{},[8677],{"type":29,"value":8678},"✅ This parameter allows to change the reason for certificate revocation.",{"type":23,"tag":211,"props":8680,"children":8681},{},[8682,8686],{"type":23,"tag":233,"props":8683,"children":8684},{},[8685],{"type":29,"value":7396},{"type":23,"tag":233,"props":8687,"children":8688},{},[8689],{"type":29,"value":8690},"✅ This parameter allows to set the certificate invalidity date.",{"type":23,"tag":4461,"props":8692,"children":8693},{},[],{"type":23,"tag":4550,"props":8695,"children":8697},{"id":8696},"_5️⃣-default-ca-defined-validation-data",[8698],{"type":29,"value":8699},"5️⃣ Default CA defined validation data",{"type":23,"tag":203,"props":8701,"children":8702},{},[8703,8717],{"type":23,"tag":207,"props":8704,"children":8705},{},[8706],{"type":23,"tag":211,"props":8707,"children":8708},{},[8709,8713],{"type":23,"tag":215,"props":8710,"children":8711},{},[8712],{"type":29,"value":6503},{"type":23,"tag":215,"props":8714,"children":8715},{},[8716],{"type":29,"value":6511},{"type":23,"tag":226,"props":8718,"children":8719},{},[8720,8733,8746,8758,8771],{"type":23,"tag":211,"props":8721,"children":8722},{},[8723,8728],{"type":23,"tag":233,"props":8724,"children":8725},{},[8726],{"type":29,"value":8727},"Default CRL Distribution Point",{"type":23,"tag":233,"props":8729,"children":8730},{},[8731],{"type":29,"value":8732},"❌ Leave this parameter empty or enter a value as required to distribute CRLs.",{"type":23,"tag":211,"props":8734,"children":8735},{},[8736,8741],{"type":23,"tag":233,"props":8737,"children":8738},{},[8739],{"type":29,"value":8740},"Default CRL Issuer",{"type":23,"tag":233,"props":8742,"children":8743},{},[8744],{"type":29,"value":8745},"❌ Leave this parameter empty. Typically, this parameter does not need to be set.",{"type":23,"tag":211,"props":8747,"children":8748},{},[8749,8754],{"type":23,"tag":233,"props":8750,"children":8751},{},[8752],{"type":29,"value":8753},"Default Freshest CRL Distribution Point",{"type":23,"tag":233,"props":8755,"children":8756},{},[8757],{"type":29,"value":8745},{"type":23,"tag":211,"props":8759,"children":8760},{},[8761,8766],{"type":23,"tag":233,"props":8762,"children":8763},{},[8764],{"type":29,"value":8765},"OCSP Service Default URI",{"type":23,"tag":233,"props":8767,"children":8768},{},[8769],{"type":29,"value":8770},"❌ Leave this parameter empty or enter an OCSP address as required.",{"type":23,"tag":211,"props":8772,"children":8773},{},[8774,8779],{"type":23,"tag":233,"props":8775,"children":8776},{},[8777],{"type":29,"value":8778},"CA Issuer Default URI",{"type":23,"tag":233,"props":8780,"children":8781},{},[8782],{"type":29,"value":8783},"❌ Leave this parameter empty or provide a URI later.",{"type":23,"tag":4461,"props":8785,"children":8786},{},[],{"type":23,"tag":4550,"props":8788,"children":8790},{"id":8789},"_6️⃣-approval-settings-and-other-data",[8791],{"type":29,"value":8792},"6️⃣ Approval settings and other data",{"type":23,"tag":37,"props":8794,"children":8795},{},[8796,8798,8803],{"type":29,"value":8797},"Currently, only ",{"type":23,"tag":140,"props":8799,"children":8801},{"className":8800},[],[8802],{"type":29,"value":6611},{"type":29,"value":8804}," is available for approval settings, indicating that no additional approval process is required. If it is required, check the global approval policy Supervision Functions of EJBCA.",{"type":23,"tag":203,"props":8806,"children":8807},{},[8808,8822],{"type":23,"tag":207,"props":8809,"children":8810},{},[8811],{"type":23,"tag":211,"props":8812,"children":8813},{},[8814,8818],{"type":23,"tag":215,"props":8815,"children":8816},{},[8817],{"type":29,"value":6503},{"type":23,"tag":215,"props":8819,"children":8820},{},[8821],{"type":29,"value":6511},{"type":23,"tag":226,"props":8823,"children":8824},{},[8825,8842,8853,8871],{"type":23,"tag":211,"props":8826,"children":8827},{},[8828,8832],{"type":23,"tag":233,"props":8829,"children":8830},{},[8831],{"type":29,"value":7571},{"type":23,"tag":233,"props":8833,"children":8834},{},[8835,8836,8841],{"type":29,"value":5969},{"type":23,"tag":140,"props":8837,"children":8839},{"className":8838},[],[8840],{"type":29,"value":7581},{"type":29,"value":7583},{"type":23,"tag":211,"props":8843,"children":8844},{},[8845,8849],{"type":23,"tag":233,"props":8846,"children":8847},{},[8848],{"type":29,"value":7594},{"type":23,"tag":233,"props":8850,"children":8851},{},[8852],{"type":29,"value":7599},{"type":23,"tag":211,"props":8854,"children":8855},{},[8856,8860],{"type":23,"tag":233,"props":8857,"children":8858},{},[8859],{"type":29,"value":7610},{"type":23,"tag":233,"props":8861,"children":8862},{},[8863,8864,8869],{"type":29,"value":5969},{"type":23,"tag":140,"props":8865,"children":8867},{"className":8866},[],[8868],{"type":29,"value":7620},{"type":29,"value":8870},". Enable running monitoring.",{"type":23,"tag":211,"props":8872,"children":8873},{},[8874,8878],{"type":23,"tag":233,"props":8875,"children":8876},{},[8877],{"type":29,"value":7633},{"type":23,"tag":233,"props":8879,"children":8880},{},[8881,8882,8887],{"type":29,"value":6605},{"type":23,"tag":140,"props":8883,"children":8885},{"className":8884},[],[8886],{"type":29,"value":6611},{"type":29,"value":8888},". Generally, external request processing is not required.",{"type":23,"tag":4461,"props":8890,"children":8891},{},[],{"type":23,"tag":4550,"props":8893,"children":8895},{"id":8894},"_7️⃣-intermediate-ca-creation",[8896],{"type":29,"value":8897},"7️⃣ Intermediate CA creation",{"type":23,"tag":37,"props":8899,"children":8900},{},[8901,8902,8906],{"type":29,"value":7725},{"type":23,"tag":4453,"props":8903,"children":8904},{},[8905],{"type":29,"value":6447},{"type":29,"value":8907}," to generate a CSR.",{"type":23,"tag":37,"props":8909,"children":8910},{},[8911],{"type":29,"value":8912},"Submit the CSR to the root CA for signature, download the signed certificate, and verify it.",{"type":23,"tag":341,"props":8914,"children":8916},{"code":8915,"language":7748,"meta":9,"className":7749,"style":9},"openssl x509 -in intermediate_ca.pem -text -noout\nopenssl verify -CAfile rootca.pem intermediate_ca.pem\n",[8917],{"type":23,"tag":140,"props":8918,"children":8919},{"__ignoreMap":9},[8920,8948],{"type":23,"tag":351,"props":8921,"children":8922},{"class":353,"line":354},[8923,8927,8931,8935,8940,8944],{"type":23,"tag":351,"props":8924,"children":8925},{"style":4575},[8926],{"type":29,"value":7769},{"type":23,"tag":351,"props":8928,"children":8929},{"style":4581},[8930],{"type":29,"value":7774},{"type":23,"tag":351,"props":8932,"children":8933},{"style":696},[8934],{"type":29,"value":7779},{"type":23,"tag":351,"props":8936,"children":8937},{"style":4581},[8938],{"type":29,"value":8939}," intermediate_ca.pem",{"type":23,"tag":351,"props":8941,"children":8942},{"style":696},[8943],{"type":29,"value":7789},{"type":23,"tag":351,"props":8945,"children":8946},{"style":696},[8947],{"type":29,"value":7794},{"type":23,"tag":351,"props":8949,"children":8950},{"class":353,"line":364},[8951,8955,8959,8963,8967],{"type":23,"tag":351,"props":8952,"children":8953},{"style":4575},[8954],{"type":29,"value":7769},{"type":23,"tag":351,"props":8956,"children":8957},{"style":4581},[8958],{"type":29,"value":7924},{"type":23,"tag":351,"props":8960,"children":8961},{"style":696},[8962],{"type":29,"value":7929},{"type":23,"tag":351,"props":8964,"children":8965},{"style":4581},[8966],{"type":29,"value":7784},{"type":23,"tag":351,"props":8968,"children":8969},{"style":4581},[8970],{"type":29,"value":8971}," intermediate_ca.pem\n",{"type":23,"tag":37,"props":8973,"children":8974},{},[8975],{"type":29,"value":8976},"🚀 The intermediate CA has been created and can be used to issue end entity certificates! 🎉",{"type":23,"tag":4461,"props":8978,"children":8979},{},[],{"type":23,"tag":4161,"props":8981,"children":8983},{"id":8982},"_6-ra-common-user-creation-and-permission-configuration",[8984],{"type":29,"value":8985},"6. RA Common User Creation and Permission Configuration",{"type":23,"tag":4530,"props":8987,"children":8989},{"id":8988},"_61-creating-an-ra-role",[8990],{"type":29,"value":8991},"6.1 Creating an RA Role",{"type":23,"tag":4920,"props":8993,"children":8994},{},[8995,9013,9071,9102,9140,9171],{"type":23,"tag":64,"props":8996,"children":8997},{},[8998,9003,9005],{"type":23,"tag":4453,"props":8999,"children":9000},{},[9001],{"type":29,"value":9002},"Access the RA Web page",{"type":29,"value":9004}," and choose Role Management > Roles > Create New Role.",{"type":23,"tag":341,"props":9006,"children":9008},{"code":9007},"Role Management →Roles →Create New Role\n",[9009],{"type":23,"tag":140,"props":9010,"children":9011},{"__ignoreMap":9},[9012],{"type":29,"value":9007},{"type":23,"tag":64,"props":9014,"children":9015},{},[9016,9021,9023],{"type":23,"tag":4453,"props":9017,"children":9018},{},[9019],{"type":29,"value":9020},"Enter role information.",{"type":29,"value":9022},"：",{"type":23,"tag":203,"props":9024,"children":9025},{},[9026,9042],{"type":23,"tag":207,"props":9027,"children":9028},{},[9029],{"type":23,"tag":211,"props":9030,"children":9031},{},[9032,9037],{"type":23,"tag":215,"props":9033,"children":9034},{},[9035],{"type":29,"value":9036},"Field",{"type":23,"tag":215,"props":9038,"children":9039},{},[9040],{"type":29,"value":9041},"Recommended Value",{"type":23,"tag":226,"props":9043,"children":9044},{},[9045,9058],{"type":23,"tag":211,"props":9046,"children":9047},{},[9048,9053],{"type":23,"tag":233,"props":9049,"children":9050},{},[9051],{"type":29,"value":9052},"Namespace",{"type":23,"tag":233,"props":9054,"children":9055},{},[9056],{"type":29,"value":9057},"No namespace",{"type":23,"tag":211,"props":9059,"children":9060},{},[9061,9066],{"type":23,"tag":233,"props":9062,"children":9063},{},[9064],{"type":29,"value":9065},"Role name",{"type":23,"tag":233,"props":9067,"children":9068},{},[9069],{"type":29,"value":9070},"test RA Users",{"type":23,"tag":64,"props":9072,"children":9073},{},[9074,9079,9080],{"type":23,"tag":4453,"props":9075,"children":9076},{},[9077],{"type":29,"value":9078},"Set the permissions for Certificate Authorities.",{"type":29,"value":9022},{"type":23,"tag":60,"props":9081,"children":9082},{},[9083],{"type":23,"tag":64,"props":9084,"children":9085},{},[9086,9088,9094,9096,9101],{"type":29,"value":9087},"Select a CA, for example, ",{"type":23,"tag":140,"props":9089,"children":9091},{"className":9090},[],[9092],{"type":29,"value":9093},"Intermediate CA",{"type":29,"value":9095}," or Root CA, from the Available list and click ",{"type":23,"tag":140,"props":9097,"children":9099},{"className":9098},[],[9100],{"type":29,"value":6127},{"type":29,"value":52},{"type":23,"tag":64,"props":9103,"children":9104},{},[9105,9110,9112],{"type":23,"tag":4453,"props":9106,"children":9107},{},[9108],{"type":29,"value":9109},"Set the permissions for End Entity.",{"type":29,"value":9111},"(Recommended):",{"type":23,"tag":60,"props":9113,"children":9114},{},[9115,9120,9125,9130,9135],{"type":23,"tag":64,"props":9116,"children":9117},{},[9118],{"type":29,"value":9119},"✅ Create end entities",{"type":23,"tag":64,"props":9121,"children":9122},{},[9123],{"type":29,"value":9124},"✅ Create certificates",{"type":23,"tag":64,"props":9126,"children":9127},{},[9128],{"type":29,"value":9129},"✅ ...by using username and password",{"type":23,"tag":64,"props":9131,"children":9132},{},[9133],{"type":29,"value":9134},"✅ ...by using a request ID",{"type":23,"tag":64,"props":9136,"children":9137},{},[9138],{"type":29,"value":9139},"✅ View end entities and certificates",{"type":23,"tag":64,"props":9141,"children":9142},{},[9143,9148,9149],{"type":23,"tag":4453,"props":9144,"children":9145},{},[9146],{"type":29,"value":9147},"Set the permissions for End Entity Profiles.",{"type":29,"value":9022},{"type":23,"tag":60,"props":9150,"children":9151},{},[9152],{"type":23,"tag":64,"props":9153,"children":9154},{},[9155,9157,9163,9165,9170],{"type":29,"value":9156},"Select ",{"type":23,"tag":140,"props":9158,"children":9160},{"className":9159},[],[9161],{"type":29,"value":9162},"EMPTY",{"type":29,"value":9164}," from the Available list and click ",{"type":23,"tag":140,"props":9166,"children":9168},{"className":9167},[],[9169],{"type":29,"value":6127},{"type":29,"value":52},{"type":23,"tag":64,"props":9172,"children":9173},{},[9174,9175,9180],{"type":29,"value":6102},{"type":23,"tag":140,"props":9176,"children":9178},{"className":9177},[],[9179],{"type":29,"value":6127},{"type":29,"value":9181}," to save the created role.",{"type":23,"tag":4530,"props":9183,"children":9185},{"id":9184},"_62-creating-an-ra-commer-user-end-entity",[9186],{"type":29,"value":9187},"6.2 Creating an RA Commer User (End Entity)",{"type":23,"tag":4920,"props":9189,"children":9190},{},[9191,9209,9389],{"type":23,"tag":64,"props":9192,"children":9193},{},[9194,9196,9201,9203,9208],{"type":29,"value":9195},"Access the ",{"type":23,"tag":4453,"props":9197,"children":9198},{},[9199],{"type":29,"value":9200},"EJBCA Admin Web",{"type":29,"value":9202}," page and choose ",{"type":23,"tag":4453,"props":9204,"children":9205},{},[9206],{"type":29,"value":9207},"RA Functions > Add End Entity",{"type":29,"value":52},{"type":23,"tag":64,"props":9210,"children":9211},{},[9212,9214],{"type":29,"value":9213},"Enter the user details.",{"type":23,"tag":203,"props":9215,"children":9216},{},[9217,9231],{"type":23,"tag":207,"props":9218,"children":9219},{},[9220],{"type":23,"tag":211,"props":9221,"children":9222},{},[9223,9227],{"type":23,"tag":215,"props":9224,"children":9225},{},[9226],{"type":29,"value":9036},{"type":23,"tag":215,"props":9228,"children":9229},{},[9230],{"type":29,"value":9041},{"type":23,"tag":226,"props":9232,"children":9233},{},[9234,9246,9259,9272,9284,9297,9314,9327,9340,9352,9363,9376],{"type":23,"tag":211,"props":9235,"children":9236},{},[9237,9242],{"type":23,"tag":233,"props":9238,"children":9239},{},[9240],{"type":29,"value":9241},"End Entity Profile",{"type":23,"tag":233,"props":9243,"children":9244},{},[9245],{"type":29,"value":9162},{"type":23,"tag":211,"props":9247,"children":9248},{},[9249,9254],{"type":23,"tag":233,"props":9250,"children":9251},{},[9252],{"type":29,"value":9253},"Username",{"type":23,"tag":233,"props":9255,"children":9256},{},[9257],{"type":29,"value":9258},"test_signuser",{"type":23,"tag":211,"props":9260,"children":9261},{},[9262,9267],{"type":23,"tag":233,"props":9263,"children":9264},{},[9265],{"type":29,"value":9266},"Password",{"type":23,"tag":233,"props":9268,"children":9269},{},[9270],{"type":29,"value":9271},"123",{"type":23,"tag":211,"props":9273,"children":9274},{},[9275,9280],{"type":23,"tag":233,"props":9276,"children":9277},{},[9278],{"type":29,"value":9279},"Confirm Password",{"type":23,"tag":233,"props":9281,"children":9282},{},[9283],{"type":29,"value":9271},{"type":23,"tag":211,"props":9285,"children":9286},{},[9287,9292],{"type":23,"tag":233,"props":9288,"children":9289},{},[9290],{"type":29,"value":9291},"Batch generation",{"type":23,"tag":233,"props":9293,"children":9294},{},[9295],{"type":29,"value":9296},"Not selected",{"type":23,"tag":211,"props":9298,"children":9299},{},[9300,9305],{"type":23,"tag":233,"props":9301,"children":9302},{},[9303],{"type":29,"value":9304},"E-mail",{"type":23,"tag":233,"props":9306,"children":9307},{},[9308],{"type":23,"tag":43,"props":9309,"children":9311},{"href":9310},"mailto:cert-user@example.com",[9312],{"type":29,"value":9313},"cert-user@example.com",{"type":23,"tag":211,"props":9315,"children":9316},{},[9317,9322],{"type":23,"tag":233,"props":9318,"children":9319},{},[9320],{"type":29,"value":9321},"CN",{"type":23,"tag":233,"props":9323,"children":9324},{},[9325],{"type":29,"value":9326},"test RA user S1",{"type":23,"tag":211,"props":9328,"children":9329},{},[9330,9335],{"type":23,"tag":233,"props":9331,"children":9332},{},[9333],{"type":29,"value":9334},"O",{"type":23,"tag":233,"props":9336,"children":9337},{},[9338],{"type":29,"value":9339},"test",{"type":23,"tag":211,"props":9341,"children":9342},{},[9343,9348],{"type":23,"tag":233,"props":9344,"children":9345},{},[9346],{"type":29,"value":9347},"C",{"type":23,"tag":233,"props":9349,"children":9350},{},[9351],{"type":29,"value":9321},{"type":23,"tag":211,"props":9353,"children":9354},{},[9355,9359],{"type":23,"tag":233,"props":9356,"children":9357},{},[9358],{"type":29,"value":6919},{"type":23,"tag":233,"props":9360,"children":9361},{},[9362],{"type":29,"value":6095},{"type":23,"tag":211,"props":9364,"children":9365},{},[9366,9371],{"type":23,"tag":233,"props":9367,"children":9368},{},[9369],{"type":29,"value":9370},"CA",{"type":23,"tag":233,"props":9372,"children":9373},{},[9374],{"type":29,"value":9375},"test Intermediate CA",{"type":23,"tag":211,"props":9377,"children":9378},{},[9379,9384],{"type":23,"tag":233,"props":9380,"children":9381},{},[9382],{"type":29,"value":9383},"Token",{"type":23,"tag":233,"props":9385,"children":9386},{},[9387],{"type":29,"value":9388},"P12 file",{"type":23,"tag":64,"props":9390,"children":9391},{},[9392,9393,9397],{"type":29,"value":6102},{"type":23,"tag":4453,"props":9394,"children":9395},{},[9396],{"type":29,"value":6127},{"type":29,"value":52},{"type":23,"tag":37,"props":9399,"children":9400},{},[9401],{"type":29,"value":9402},"End Entity is created.",{"type":23,"tag":4530,"props":9404,"children":9406},{"id":9405},"_63-downloading-the-user-certificate",[9407],{"type":29,"value":9408},"6.3 Downloading the User Certificate",{"type":23,"tag":4920,"props":9410,"children":9411},{},[9412,9428,9456],{"type":23,"tag":64,"props":9413,"children":9414},{},[9415,9416,9421,9422,9427],{"type":29,"value":9195},{"type":23,"tag":4453,"props":9417,"children":9418},{},[9419],{"type":29,"value":9420},"RA Web",{"type":29,"value":9202},{"type":23,"tag":4453,"props":9423,"children":9424},{},[9425],{"type":29,"value":9426},"Enroll > Use Username",{"type":29,"value":52},{"type":23,"tag":64,"props":9429,"children":9430},{},[9431,9433],{"type":29,"value":9432},"Use the created username and password to log in.",{"type":23,"tag":60,"props":9434,"children":9435},{},[9436,9446],{"type":23,"tag":64,"props":9437,"children":9438},{},[9439,9441],{"type":29,"value":9440},"Username: ",{"type":23,"tag":140,"props":9442,"children":9444},{"className":9443},[],[9445],{"type":29,"value":9258},{"type":23,"tag":64,"props":9447,"children":9448},{},[9449,9451],{"type":29,"value":9450},"Password: ",{"type":23,"tag":140,"props":9452,"children":9454},{"className":9453},[],[9455],{"type":29,"value":9271},{"type":23,"tag":64,"props":9457,"children":9458},{},[9459,9461],{"type":29,"value":9460},"Select a key algorithm after logging in.",{"type":23,"tag":60,"props":9462,"children":9463},{},[9464],{"type":23,"tag":64,"props":9465,"children":9466},{},[9467,9469,9474,9476,9481],{"type":29,"value":9468},"Select the ",{"type":23,"tag":140,"props":9470,"children":9472},{"className":9471},[],[9473],{"type":29,"value":6324},{"type":29,"value":9475}," algorithm, and generate and download the ",{"type":23,"tag":140,"props":9477,"children":9479},{"className":9478},[],[9480],{"type":29,"value":5931},{"type":29,"value":9482}," user certificate.",{"type":23,"tag":4530,"props":9484,"children":9486},{"id":9485},"_64-adding-a-user-to-the-ra-role",[9487],{"type":29,"value":9488},"6.4 Adding a User to the RA Role",{"type":23,"tag":4920,"props":9490,"children":9491},{},[9492,9507,9512,9527,9626,9636,9646],{"type":23,"tag":64,"props":9493,"children":9494},{},[9495,9496,9500,9501,9506],{"type":29,"value":9195},{"type":23,"tag":4453,"props":9497,"children":9498},{},[9499],{"type":29,"value":9420},{"type":29,"value":9202},{"type":23,"tag":4453,"props":9502,"children":9503},{},[9504],{"type":29,"value":9505},"Search > End Entities",{"type":29,"value":52},{"type":23,"tag":64,"props":9508,"children":9509},{},[9510],{"type":29,"value":9511},"Copy the CN of the certificate created earlier.",{"type":23,"tag":64,"props":9513,"children":9514},{},[9515,9516,9520,9521,9526],{"type":29,"value":9195},{"type":23,"tag":4453,"props":9517,"children":9518},{},[9519],{"type":29,"value":9420},{"type":29,"value":9202},{"type":23,"tag":4453,"props":9522,"children":9523},{},[9524],{"type":29,"value":9525},"Role Management > Roles > Members > Add Role Member",{"type":29,"value":52},{"type":23,"tag":64,"props":9528,"children":9529},{},[9530,9532],{"type":29,"value":9531},"Enter the information about the role member.",{"type":23,"tag":203,"props":9533,"children":9534},{},[9535,9549],{"type":23,"tag":207,"props":9536,"children":9537},{},[9538],{"type":23,"tag":211,"props":9539,"children":9540},{},[9541,9545],{"type":23,"tag":215,"props":9542,"children":9543},{},[9544],{"type":29,"value":9036},{"type":23,"tag":215,"props":9546,"children":9547},{},[9548],{"type":29,"value":9041},{"type":23,"tag":226,"props":9550,"children":9551},{},[9552,9564,9577,9588,9601,9614],{"type":23,"tag":211,"props":9553,"children":9554},{},[9555,9560],{"type":23,"tag":233,"props":9556,"children":9557},{},[9558],{"type":29,"value":9559},"Role",{"type":23,"tag":233,"props":9561,"children":9562},{},[9563],{"type":29,"value":9070},{"type":23,"tag":211,"props":9565,"children":9566},{},[9567,9572],{"type":23,"tag":233,"props":9568,"children":9569},{},[9570],{"type":29,"value":9571},"Token Type",{"type":23,"tag":233,"props":9573,"children":9574},{},[9575],{"type":29,"value":9576},"Certificate",{"type":23,"tag":211,"props":9578,"children":9579},{},[9580,9584],{"type":23,"tag":233,"props":9581,"children":9582},{},[9583],{"type":29,"value":9370},{"type":23,"tag":233,"props":9585,"children":9586},{},[9587],{"type":29,"value":9375},{"type":23,"tag":211,"props":9589,"children":9590},{},[9591,9596],{"type":23,"tag":233,"props":9592,"children":9593},{},[9594],{"type":29,"value":9595},"Match with",{"type":23,"tag":233,"props":9597,"children":9598},{},[9599],{"type":29,"value":9600},"CN Common Name",{"type":23,"tag":211,"props":9602,"children":9603},{},[9604,9609],{"type":23,"tag":233,"props":9605,"children":9606},{},[9607],{"type":29,"value":9608},"Match Value",{"type":23,"tag":233,"props":9610,"children":9611},{},[9612],{"type":29,"value":9613},"Paste the copied certificate CN.",{"type":23,"tag":211,"props":9615,"children":9616},{},[9617,9621],{"type":23,"tag":233,"props":9618,"children":9619},{},[9620],{"type":29,"value":6511},{"type":23,"tag":233,"props":9622,"children":9623},{},[9624],{"type":29,"value":9625},"RA common user",{"type":23,"tag":64,"props":9627,"children":9628},{},[9629,9630,9634],{"type":29,"value":6102},{"type":23,"tag":4453,"props":9631,"children":9632},{},[9633],{"type":29,"value":6127},{"type":29,"value":9635}," to add the role member.",{"type":23,"tag":64,"props":9637,"children":9638},{},[9639,9644],{"type":23,"tag":4453,"props":9640,"children":9641},{},[9642],{"type":29,"value":9643},"Restart the EJBCA service",{"type":29,"value":9645}," for the permission to take effect (recommended).",{"type":23,"tag":64,"props":9647,"children":9648},{},[9649],{"type":29,"value":9650},"docker restart ejbca",{"type":23,"tag":4530,"props":9652,"children":9654},{"id":9653},"_65-logging-in-to-the-ra-webui",[9655],{"type":29,"value":9656},"6.5 Logging In to the RA WebUI",{"type":23,"tag":4920,"props":9658,"children":9659},{},[9660,9670,9675],{"type":23,"tag":64,"props":9661,"children":9662},{},[9663,9668],{"type":23,"tag":4453,"props":9664,"children":9665},{},[9666],{"type":29,"value":9667},"Non-administrator",{"type":29,"value":9669}," roles import the downloaded · certificate to the browser.",{"type":23,"tag":64,"props":9671,"children":9672},{},[9673],{"type":29,"value":9674},"Access the RA Web page for automatic authentication and login.",{"type":23,"tag":64,"props":9676,"children":9677},{},[9678],{"type":29,"value":9679},"Perform authorized RA operations, such as creating and viewing certificates.",{"type":23,"tag":4530,"props":9681,"children":9683},{"id":9682},"_66-important-notes-must-be-followed",[9684],{"type":29,"value":9685},"6.6 Important Notes (Must Be Followed)",{"type":23,"tag":37,"props":9687,"children":9688},{},[9689],{"type":29,"value":9690},"✅ You are advised to use the Chrome browser in incognito mode for the first login to quickly start the verification and avoid the error \"No OAuth providers configured. Please log in using a valid certificate\" caused by cache problems.",{"type":23,"tag":37,"props":9692,"children":9693},{},[9694,9695,9700,9702,9708],{"type":29,"value":5969},{"type":23,"tag":4453,"props":9696,"children":9697},{},[9698],{"type":29,"value":9699},"Use HTTPS",{"type":29,"value":9701}," to access, for example, ",{"type":23,"tag":43,"props":9703,"children":9706},{"href":9704,"rel":9705},"https:\u002F\u002F192.168.xxx.xxx\u002Fejbca\u002Fra\u002F",[47],[9707],{"type":29,"value":9704},{"type":29,"value":9709},", to avoid the error \"No OAuth providers configured. Please log in using a valid certificate.\"",{"type":23,"tag":4461,"props":9711,"children":9712},{},[],{"type":23,"tag":4161,"props":9714,"children":9716},{"id":9715},"_7-certificate-profile-settings",[9717],{"type":29,"value":9718},"7. Certificate Profile Settings",{"type":23,"tag":37,"props":9720,"children":9721},{},[9722],{"type":29,"value":9723},"This section describes the meanings and recommended usage of the Certificate Profile configuration items in the EJBCA. It is applicable to certificate issuance requirements for common devices such as HTTPS, web, device, and client.",{"type":23,"tag":4461,"props":9725,"children":9726},{},[],{"type":23,"tag":4530,"props":9728,"children":9730},{"id":9729},"_71-basic-information",[9731],{"type":29,"value":9732},"7.1 Basic Information",{"type":23,"tag":203,"props":9734,"children":9735},{},[9736,9751],{"type":23,"tag":207,"props":9737,"children":9738},{},[9739],{"type":23,"tag":211,"props":9740,"children":9741},{},[9742,9747],{"type":23,"tag":215,"props":9743,"children":9744},{},[9745],{"type":29,"value":9746},"Configuration Item",{"type":23,"tag":215,"props":9748,"children":9749},{},[9750],{"type":29,"value":6511},{"type":23,"tag":226,"props":9752,"children":9753},{},[9754,9770,9785,9801,9817,9833,9849,9865,9881,9897,9913],{"type":23,"tag":211,"props":9755,"children":9756},{},[9757,9765],{"type":23,"tag":233,"props":9758,"children":9759},{},[9760],{"type":23,"tag":4453,"props":9761,"children":9762},{},[9763],{"type":29,"value":9764},"Certificate Profile ID",{"type":23,"tag":233,"props":9766,"children":9767},{},[9768],{"type":29,"value":9769},"Unique identifier of the profile in the database, which is used only for internal identification.",{"type":23,"tag":211,"props":9771,"children":9772},{},[9773,9780],{"type":23,"tag":233,"props":9774,"children":9775},{},[9776],{"type":23,"tag":4453,"props":9777,"children":9778},{},[9779],{"type":29,"value":6205},{"type":23,"tag":233,"props":9781,"children":9782},{},[9783],{"type":29,"value":9784},"Available end entity, subordinate CA, and root CA.",{"type":23,"tag":211,"props":9786,"children":9787},{},[9788,9796],{"type":23,"tag":233,"props":9789,"children":9790},{},[9791],{"type":23,"tag":4453,"props":9792,"children":9793},{},[9794],{"type":29,"value":9795},"Available Key Algorithms",{"type":23,"tag":233,"props":9797,"children":9798},{},[9799],{"type":29,"value":9800},"Available key algorithms, such as RSA, ECDSA, Ed25519, and DILITHIUM.",{"type":23,"tag":211,"props":9802,"children":9803},{},[9804,9812],{"type":23,"tag":233,"props":9805,"children":9806},{},[9807],{"type":23,"tag":4453,"props":9808,"children":9809},{},[9810],{"type":29,"value":9811},"Available ECDSA curves",{"type":23,"tag":233,"props":9813,"children":9814},{},[9815],{"type":29,"value":9816},"Available ECDSA curves. No curve is enabled currently.",{"type":23,"tag":211,"props":9818,"children":9819},{},[9820,9828],{"type":23,"tag":233,"props":9821,"children":9822},{},[9823],{"type":23,"tag":4453,"props":9824,"children":9825},{},[9826],{"type":29,"value":9827},"Available bit length",{"type":23,"tag":233,"props":9829,"children":9830},{},[9831],{"type":29,"value":9832},"Key size supported (for RSA), such as 2048 and 4096.",{"type":23,"tag":211,"props":9834,"children":9835},{},[9836,9844],{"type":23,"tag":233,"props":9837,"children":9838},{},[9839],{"type":23,"tag":4453,"props":9840,"children":9841},{},[9842],{"type":29,"value":9843},"Signature algorithm",{"type":23,"tag":233,"props":9845,"children":9846},{},[9847],{"type":29,"value":9848},"Signature hash algorithm used for certificate issuance, for example, SHA3-256withRSA.",{"type":23,"tag":211,"props":9850,"children":9851},{},[9852,9860],{"type":23,"tag":233,"props":9853,"children":9854},{},[9855],{"type":23,"tag":4453,"props":9856,"children":9857},{},[9858],{"type":29,"value":9859},"Alternative Signature",{"type":23,"tag":233,"props":9861,"children":9862},{},[9863],{"type":29,"value":9864},"Whether to enable the alternative signature algorithm, such as ECDSA and EdDSA.",{"type":23,"tag":211,"props":9866,"children":9867},{},[9868,9876],{"type":23,"tag":233,"props":9869,"children":9870},{},[9871],{"type":23,"tag":4453,"props":9872,"children":9873},{},[9874],{"type":29,"value":9875},"End date or end date of the certificate",{"type":23,"tag":233,"props":9877,"children":9878},{},[9879],{"type":29,"value":9880},"Default validity period. For example, \"2y\" indicates two years.",{"type":23,"tag":211,"props":9882,"children":9883},{},[9884,9892],{"type":23,"tag":233,"props":9885,"children":9886},{},[9887],{"type":23,"tag":4453,"props":9888,"children":9889},{},[9890],{"type":29,"value":9891},"Validity Offset",{"type":23,"tag":233,"props":9893,"children":9894},{},[9895],{"type":29,"value":9896},"Offset of the issue date. The start time can be set forward or backward.",{"type":23,"tag":211,"props":9898,"children":9899},{},[9900,9908],{"type":23,"tag":233,"props":9901,"children":9902},{},[9903],{"type":23,"tag":4453,"props":9904,"children":9905},{},[9906],{"type":29,"value":9907},"Expiration Restrictions",{"type":23,"tag":233,"props":9909,"children":9910},{},[9911],{"type":29,"value":9912},"Maximum expiration time, which is used for compliance control.",{"type":23,"tag":211,"props":9914,"children":9915},{},[9916,9924],{"type":23,"tag":233,"props":9917,"children":9918},{},[9919],{"type":23,"tag":4453,"props":9920,"children":9921},{},[9922],{"type":29,"value":9923},"Profile Description",{"type":23,"tag":233,"props":9925,"children":9926},{},[9927],{"type":29,"value":9928},"Certificate profile description, which is used to note the purpose (for example, \"terminal device certificate\").",{"type":23,"tag":4461,"props":9930,"children":9931},{},[],{"type":23,"tag":4530,"props":9933,"children":9935},{"id":9934},"_72-permissions-control",[9936],{"type":29,"value":9937},"7.2 Permissions Control",{"type":23,"tag":203,"props":9939,"children":9940},{},[9941,9960],{"type":23,"tag":207,"props":9942,"children":9943},{},[9944],{"type":23,"tag":211,"props":9945,"children":9946},{},[9947,9951,9955],{"type":23,"tag":215,"props":9948,"children":9949},{},[9950],{"type":29,"value":9746},{"type":23,"tag":215,"props":9952,"children":9953},{},[9954],{"type":29,"value":6511},{"type":23,"tag":215,"props":9956,"children":9957},{},[9958],{"type":29,"value":9959},"Recommended Setting",{"type":23,"tag":226,"props":9961,"children":9962},{},[9963,9981,9999,10017,10035,10053,10071,10089,10107,10124],{"type":23,"tag":211,"props":9964,"children":9965},{},[9966,9971,9976],{"type":23,"tag":233,"props":9967,"children":9968},{},[9969],{"type":29,"value":9970},"Allow Validity Override",{"type":23,"tag":233,"props":9972,"children":9973},{},[9974],{"type":29,"value":9975},"Allow the default validity period to be overwritten when a certificate is issued.",{"type":23,"tag":233,"props":9977,"children":9978},{},[9979],{"type":29,"value":9980},"✅ which is used when the validity period needs to be manually adjusted.",{"type":23,"tag":211,"props":9982,"children":9983},{},[9984,9989,9994],{"type":23,"tag":233,"props":9985,"children":9986},{},[9987],{"type":29,"value":9988},"Allow Expired Validity End Date",{"type":23,"tag":233,"props":9990,"children":9991},{},[9992],{"type":29,"value":9993},"Allow the end time to be set to an expired time (for test or audit).",{"type":23,"tag":233,"props":9995,"children":9996},{},[9997],{"type":29,"value":9998},"✅ (for debugging)",{"type":23,"tag":211,"props":10000,"children":10001},{},[10002,10007,10012],{"type":23,"tag":233,"props":10003,"children":10004},{},[10005],{"type":29,"value":10006},"Allow Extension Override",{"type":23,"tag":233,"props":10008,"children":10009},{},[10010],{"type":29,"value":10011},"Allow the extension fields in the CSR to overwrite the predefined extension fields in the profile.",{"type":23,"tag":233,"props":10013,"children":10014},{},[10015],{"type":29,"value":10016},"❌ Enabling this function can harm profile uniformity and create potential risks.",{"type":23,"tag":211,"props":10018,"children":10019},{},[10020,10025,10030],{"type":23,"tag":233,"props":10021,"children":10022},{},[10023],{"type":29,"value":10024},"Allow certificate serial number override",{"type":23,"tag":233,"props":10026,"children":10027},{},[10028],{"type":29,"value":10029},"Allow the certificate serial number to be customized during issuance.",{"type":23,"tag":233,"props":10031,"children":10032},{},[10033],{"type":29,"value":10034},"❌ Enable this function only under specific circumstances (for example, for certificate cloning and replacement).",{"type":23,"tag":211,"props":10036,"children":10037},{},[10038,10043,10048],{"type":23,"tag":233,"props":10039,"children":10040},{},[10041],{"type":29,"value":10042},"Allow Subject DN Override by CSR",{"type":23,"tag":233,"props":10044,"children":10045},{},[10046],{"type":29,"value":10047},"Allow the subject information (such as CN\u002FO) in the CSR to overwrite the profile configuration.",{"type":23,"tag":233,"props":10049,"children":10050},{},[10051],{"type":29,"value":10052},"✅ which is applicable to the automatic issuance process.",{"type":23,"tag":211,"props":10054,"children":10055},{},[10056,10061,10066],{"type":23,"tag":233,"props":10057,"children":10058},{},[10059],{"type":29,"value":10060},"Allow Subject DN Override by End Entity Information",{"type":23,"tag":233,"props":10062,"children":10063},{},[10064],{"type":29,"value":10065},"Allow the subject field to be specified based on the end entity information (user input).",{"type":23,"tag":233,"props":10067,"children":10068},{},[10069],{"type":29,"value":10070},"(Recommended) ✅, which provides high flexibility.",{"type":23,"tag":211,"props":10072,"children":10073},{},[10074,10079,10084],{"type":23,"tag":233,"props":10075,"children":10076},{},[10077],{"type":29,"value":10078},"Allow Key Usage Override",{"type":23,"tag":233,"props":10080,"children":10081},{},[10082],{"type":29,"value":10083},"Allow the keyUsage field in the CSR to overwrite the profile configuration.",{"type":23,"tag":233,"props":10085,"children":10086},{},[10087],{"type":29,"value":10088},"❌ Enabling this function creates inconsistencies that compromise security.",{"type":23,"tag":211,"props":10090,"children":10091},{},[10092,10097,10102],{"type":23,"tag":233,"props":10093,"children":10094},{},[10095],{"type":29,"value":10096},"Allow Backdated Revocation",{"type":23,"tag":233,"props":10098,"children":10099},{},[10100],{"type":29,"value":10101},"Allow the revocation time to be set to a historical time for retrospective revocation.",{"type":23,"tag":233,"props":10103,"children":10104},{},[10105],{"type":29,"value":10106},"✅ which is required in some audit\u002Fcompliance scenarios.",{"type":23,"tag":211,"props":10108,"children":10109},{},[10110,10114,10119],{"type":23,"tag":233,"props":10111,"children":10112},{},[10113],{"type":29,"value":6824},{"type":23,"tag":233,"props":10115,"children":10116},{},[10117],{"type":29,"value":10118},"Enable the certificate to be stored in the database. This item must be enabled unless it is used for special offline purposes.",{"type":23,"tag":233,"props":10120,"children":10121},{},[10122],{"type":29,"value":10123},"✅",{"type":23,"tag":211,"props":10125,"children":10126},{},[10127,10132,10137],{"type":23,"tag":233,"props":10128,"children":10129},{},[10130],{"type":29,"value":10131},"Store Certificate Data",{"type":23,"tag":233,"props":10133,"children":10134},{},[10135],{"type":29,"value":10136},"Store the complete original certificate data (used with OCSP\u002FCRL).",{"type":23,"tag":233,"props":10138,"children":10139},{},[10140],{"type":29,"value":10141},"✅ It is recommended that this function be enabled together with the storage function.",{"type":23,"tag":37,"props":10143,"children":10144},{},[10145,10147],{"type":29,"value":10146},"✅ Suggestion: ",{"type":23,"tag":4453,"props":10148,"children":10149},{},[10150],{"type":29,"value":10151},"Keep profiles consistent in the production environment. Disable override permissions unless needed to stop CSR or End Entities from making unauthorized changes.",{"type":23,"tag":4461,"props":10153,"children":10154},{},[],{"type":23,"tag":4530,"props":10156,"children":10158},{"id":10157},"_73-x509v3-extensionbasic-information",[10159],{"type":29,"value":10160},"7.3 X.509v3 Extension—Basic Information",{"type":23,"tag":203,"props":10162,"children":10163},{},[10164,10183],{"type":23,"tag":207,"props":10165,"children":10166},{},[10167],{"type":23,"tag":211,"props":10168,"children":10169},{},[10170,10175,10179],{"type":23,"tag":215,"props":10171,"children":10172},{},[10173],{"type":29,"value":10174},"Extension Item",{"type":23,"tag":215,"props":10176,"children":10177},{},[10178],{"type":29,"value":6511},{"type":23,"tag":215,"props":10180,"children":10181},{},[10182],{"type":29,"value":9959},{"type":23,"tag":226,"props":10184,"children":10185},{},[10186,10204,10222],{"type":23,"tag":211,"props":10187,"children":10188},{},[10189,10194,10199],{"type":23,"tag":233,"props":10190,"children":10191},{},[10192],{"type":29,"value":10193},"Basic constraints",{"type":23,"tag":233,"props":10195,"children":10196},{},[10197],{"type":29,"value":10198},"Must be a CA certificate (the value must be FALSE for end entity certificates)",{"type":23,"tag":233,"props":10200,"children":10201},{},[10202],{"type":29,"value":10203},"✅ Enabled; key setting",{"type":23,"tag":211,"props":10205,"children":10206},{},[10207,10212,10217],{"type":23,"tag":233,"props":10208,"children":10209},{},[10210],{"type":29,"value":10211},"CA key identifier",{"type":23,"tag":233,"props":10213,"children":10214},{},[10215],{"type":29,"value":10216},"Information about the CA that issues the certificate.",{"type":23,"tag":233,"props":10218,"children":10219},{},[10220],{"type":29,"value":10221},"✅ Enabled",{"type":23,"tag":211,"props":10223,"children":10224},{},[10225,10230,10235],{"type":23,"tag":233,"props":10226,"children":10227},{},[10228],{"type":29,"value":10229},"Subject key identifier",{"type":23,"tag":233,"props":10231,"children":10232},{},[10233],{"type":29,"value":10234},"Unique ID of the certificate.",{"type":23,"tag":233,"props":10236,"children":10237},{},[10238],{"type":29,"value":10221},{"type":23,"tag":4461,"props":10240,"children":10241},{},[],{"type":23,"tag":4530,"props":10243,"children":10245},{"id":10244},"_74-x509v3-extensionkey-usage",[10246],{"type":29,"value":10247},"7.4 X.509v3 Extension—Key Usage",{"type":23,"tag":203,"props":10249,"children":10250},{},[10251,10266],{"type":23,"tag":207,"props":10252,"children":10253},{},[10254],{"type":23,"tag":211,"props":10255,"children":10256},{},[10257,10262],{"type":23,"tag":215,"props":10258,"children":10259},{},[10260],{"type":29,"value":10261},"Item",{"type":23,"tag":215,"props":10263,"children":10264},{},[10265],{"type":29,"value":6511},{"type":23,"tag":226,"props":10267,"children":10268},{},[10269,10282,10295,10308,10321,10334,10347,10360,10373,10386],{"type":23,"tag":211,"props":10270,"children":10271},{},[10272,10277],{"type":23,"tag":233,"props":10273,"children":10274},{},[10275],{"type":29,"value":10276},"digitalSignature",{"type":23,"tag":233,"props":10278,"children":10279},{},[10280],{"type":29,"value":10281},"Used for signature verification, such as identity authentication and code signature.",{"type":23,"tag":211,"props":10283,"children":10284},{},[10285,10290],{"type":23,"tag":233,"props":10286,"children":10287},{},[10288],{"type":29,"value":10289},"nonRepudiation",{"type":23,"tag":233,"props":10291,"children":10292},{},[10293],{"type":29,"value":10294},"Indicates that the signature is non-repudiable (legal scenario).",{"type":23,"tag":211,"props":10296,"children":10297},{},[10298,10303],{"type":23,"tag":233,"props":10299,"children":10300},{},[10301],{"type":29,"value":10302},"dataEncipherment",{"type":23,"tag":233,"props":10304,"children":10305},{},[10306],{"type":29,"value":10307},"Used to encrypt non-key data.",{"type":23,"tag":211,"props":10309,"children":10310},{},[10311,10316],{"type":23,"tag":233,"props":10312,"children":10313},{},[10314],{"type":29,"value":10315},"keyEncipherment",{"type":23,"tag":233,"props":10317,"children":10318},{},[10319],{"type":29,"value":10320},"Used to encrypt key materials, such as symmetric keys.",{"type":23,"tag":211,"props":10322,"children":10323},{},[10324,10329],{"type":23,"tag":233,"props":10325,"children":10326},{},[10327],{"type":29,"value":10328},"keyAgreement",{"type":23,"tag":233,"props":10330,"children":10331},{},[10332],{"type":29,"value":10333},"Key negotiation protocol (such as DH)",{"type":23,"tag":211,"props":10335,"children":10336},{},[10337,10342],{"type":23,"tag":233,"props":10338,"children":10339},{},[10340],{"type":29,"value":10341},"cRLSign",{"type":23,"tag":233,"props":10343,"children":10344},{},[10345],{"type":29,"value":10346},"Used by the CA to sign CRLs.",{"type":23,"tag":211,"props":10348,"children":10349},{},[10350,10355],{"type":23,"tag":233,"props":10351,"children":10352},{},[10353],{"type":29,"value":10354},"keyCertSign",{"type":23,"tag":233,"props":10356,"children":10357},{},[10358],{"type":29,"value":10359},"Used by the CA to sign certificates.",{"type":23,"tag":211,"props":10361,"children":10362},{},[10363,10368],{"type":23,"tag":233,"props":10364,"children":10365},{},[10366],{"type":29,"value":10367},"encipherOnly",{"type":23,"tag":233,"props":10369,"children":10370},{},[10371],{"type":29,"value":10372},"Used with keyAgreement (only for encryption).",{"type":23,"tag":211,"props":10374,"children":10375},{},[10376,10381],{"type":23,"tag":233,"props":10377,"children":10378},{},[10379],{"type":29,"value":10380},"decipherOnly",{"type":23,"tag":233,"props":10382,"children":10383},{},[10384],{"type":29,"value":10385},"Used with keyAgreement (only for decryption).",{"type":23,"tag":211,"props":10387,"children":10388},{},[10389,10394],{"type":23,"tag":233,"props":10390,"children":10391},{},[10392],{"type":29,"value":10393},"Forbid encryption usage for ECC keys",{"type":23,"tag":233,"props":10395,"children":10396},{},[10397],{"type":29,"value":10398},"Forbids encryption usage for ECC keys.",{"type":23,"tag":4530,"props":10400,"children":10402},{"id":10401},"_75-x509v3-extensionextended-key-usage",[10403],{"type":29,"value":10404},"7.5 X.509v3 Extension—Extended Key Usage",{"type":23,"tag":203,"props":10406,"children":10407},{},[10408,10422],{"type":23,"tag":207,"props":10409,"children":10410},{},[10411],{"type":23,"tag":211,"props":10412,"children":10413},{},[10414,10418],{"type":23,"tag":215,"props":10415,"children":10416},{},[10417],{"type":29,"value":6146},{"type":23,"tag":215,"props":10419,"children":10420},{},[10421],{"type":29,"value":6511},{"type":23,"tag":226,"props":10423,"children":10424},{},[10425,10438,10451,10464,10477,10490,10503,10516,10529,10542,10555,10568,10581,10594,10607,10620,10633,10646,10659,10672,10685,10698,10711,10724,10737,10750,10763,10776,10789,10802,10815,10828,10841],{"type":23,"tag":211,"props":10426,"children":10427},{},[10428,10433],{"type":23,"tag":233,"props":10429,"children":10430},{},[10431],{"type":29,"value":10432},"TLS client",{"type":23,"tag":233,"props":10434,"children":10435},{},[10436],{"type":29,"value":10437},"TLS authentication on the client",{"type":23,"tag":211,"props":10439,"children":10440},{},[10441,10446],{"type":23,"tag":233,"props":10442,"children":10443},{},[10444],{"type":29,"value":10445},"TLS server",{"type":23,"tag":233,"props":10447,"children":10448},{},[10449],{"type":29,"value":10450},"TLS authentication on the server",{"type":23,"tag":211,"props":10452,"children":10453},{},[10454,10459],{"type":23,"tag":233,"props":10455,"children":10456},{},[10457],{"type":29,"value":10458},"EAP over LAN (EAPOL)",{"type":23,"tag":233,"props":10460,"children":10461},{},[10462],{"type":29,"value":10463},"Enterprise identity authentication",{"type":23,"tag":211,"props":10465,"children":10466},{},[10467,10472],{"type":23,"tag":233,"props":10468,"children":10469},{},[10470],{"type":29,"value":10471},"EAP over PPP",{"type":23,"tag":233,"props":10473,"children":10474},{},[10475],{"type":29,"value":10476},"Point-to-Point Protocol (PPP) identity authentication",{"type":23,"tag":211,"props":10478,"children":10479},{},[10480,10485],{"type":23,"tag":233,"props":10481,"children":10482},{},[10483],{"type":29,"value":10484},"ETSI TSL Signing",{"type":23,"tag":233,"props":10486,"children":10487},{},[10488],{"type":29,"value":10489},"ETSI TSL signing",{"type":23,"tag":211,"props":10491,"children":10492},{},[10493,10498],{"type":23,"tag":233,"props":10494,"children":10495},{},[10496],{"type":29,"value":10497},"ICAO Deviation List Signing",{"type":23,"tag":233,"props":10499,"children":10500},{},[10501],{"type":29,"value":10502},"ICAO signing",{"type":23,"tag":211,"props":10504,"children":10505},{},[10506,10511],{"type":23,"tag":233,"props":10507,"children":10508},{},[10509],{"type":29,"value":10510},"ICAO Master List Signing",{"type":23,"tag":233,"props":10512,"children":10513},{},[10514],{"type":29,"value":10515},"ICAO primary list signing",{"type":23,"tag":211,"props":10517,"children":10518},{},[10519,10524],{"type":23,"tag":233,"props":10520,"children":10521},{},[10522],{"type":29,"value":10523},"Intel AMT management",{"type":23,"tag":233,"props":10525,"children":10526},{},[10527],{"type":29,"value":10528},"Dedicated to Intel management certification",{"type":23,"tag":211,"props":10530,"children":10531},{},[10532,10537],{"type":23,"tag":233,"props":10533,"children":10534},{},[10535],{"type":29,"value":10536},"Internet Key Exchange for IPsec",{"type":23,"tag":233,"props":10538,"children":10539},{},[10540],{"type":29,"value":10541},"IPsec key exchange",{"type":23,"tag":211,"props":10543,"children":10544},{},[10545,10550],{"type":23,"tag":233,"props":10546,"children":10547},{},[10548],{"type":29,"value":10549},"Kerberos Client Authentication",{"type":23,"tag":233,"props":10551,"children":10552},{},[10553],{"type":29,"value":10554},"Kerberos client authentication",{"type":23,"tag":211,"props":10556,"children":10557},{},[10558,10563],{"type":23,"tag":233,"props":10559,"children":10560},{},[10561],{"type":29,"value":10562},"Kerberos KDC",{"type":23,"tag":233,"props":10564,"children":10565},{},[10566],{"type":29,"value":10567},"Kerberos key center",{"type":23,"tag":211,"props":10569,"children":10570},{},[10571,10576],{"type":23,"tag":233,"props":10572,"children":10573},{},[10574],{"type":29,"value":10575},"MS CA Key Exchange",{"type":23,"tag":233,"props":10577,"children":10578},{},[10579],{"type":29,"value":10580},"Microsoft CA key exchange",{"type":23,"tag":211,"props":10582,"children":10583},{},[10584,10589],{"type":23,"tag":233,"props":10585,"children":10586},{},[10587],{"type":29,"value":10588},"MS Commercial Code Signing",{"type":23,"tag":233,"props":10590,"children":10591},{},[10592],{"type":29,"value":10593},"Microsoft commercial code signing",{"type":23,"tag":211,"props":10595,"children":10596},{},[10597,10602],{"type":23,"tag":233,"props":10598,"children":10599},{},[10600],{"type":29,"value":10601},"MS Document Signing",{"type":23,"tag":233,"props":10603,"children":10604},{},[10605],{"type":29,"value":10606},"Microsoft document signing",{"type":23,"tag":211,"props":10608,"children":10609},{},[10610,10615],{"type":23,"tag":233,"props":10611,"children":10612},{},[10613],{"type":29,"value":10614},"MS EFS Recovery",{"type":23,"tag":233,"props":10616,"children":10617},{},[10618],{"type":29,"value":10619},"Microsoft EFS recovery",{"type":23,"tag":211,"props":10621,"children":10622},{},[10623,10628],{"type":23,"tag":233,"props":10624,"children":10625},{},[10626],{"type":29,"value":10627},"MS Encrypted File System",{"type":23,"tag":233,"props":10629,"children":10630},{},[10631],{"type":29,"value":10632},"Microsoft encrypted file system",{"type":23,"tag":211,"props":10634,"children":10635},{},[10636,10641],{"type":23,"tag":233,"props":10637,"children":10638},{},[10639],{"type":29,"value":10640},"MS Individual Code Signing",{"type":23,"tag":233,"props":10642,"children":10643},{},[10644],{"type":29,"value":10645},"Microsoft individual code signing",{"type":23,"tag":211,"props":10647,"children":10648},{},[10649,10654],{"type":23,"tag":233,"props":10650,"children":10651},{},[10652],{"type":29,"value":10653},"MS Smart Card Sign-in",{"type":23,"tag":233,"props":10655,"children":10656},{},[10657],{"type":29,"value":10658},"Microsoft smart card login authentication",{"type":23,"tag":211,"props":10660,"children":10661},{},[10662,10667],{"type":23,"tag":233,"props":10663,"children":10664},{},[10665],{"type":29,"value":10666},"OCSP Issuer",{"type":23,"tag":233,"props":10668,"children":10669},{},[10670],{"type":29,"value":10671},"Online Certificate Status Protocol (OCSP) signing certificate",{"type":23,"tag":211,"props":10673,"children":10674},{},[10675,10680],{"type":23,"tag":233,"props":10676,"children":10677},{},[10678],{"type":29,"value":10679},"PDF Signing",{"type":23,"tag":233,"props":10681,"children":10682},{},[10683],{"type":29,"value":10684},"PDF signing",{"type":23,"tag":211,"props":10686,"children":10687},{},[10688,10693],{"type":23,"tag":233,"props":10689,"children":10690},{},[10691],{"type":29,"value":10692},"PIV Card Authentication",{"type":23,"tag":233,"props":10694,"children":10695},{},[10696],{"type":29,"value":10697},"PIV card authentication",{"type":23,"tag":211,"props":10699,"children":10700},{},[10701,10706],{"type":23,"tag":233,"props":10702,"children":10703},{},[10704],{"type":29,"value":10705},"RFC9336 Document Signing",{"type":23,"tag":233,"props":10707,"children":10708},{},[10709],{"type":29,"value":10710},"RFC9336-compliant document signing",{"type":23,"tag":211,"props":10712,"children":10713},{},[10714,10719],{"type":23,"tag":233,"props":10715,"children":10716},{},[10717],{"type":29,"value":10718},"SCVP Client",{"type":23,"tag":233,"props":10720,"children":10721},{},[10722],{"type":29,"value":10723},"Simplified Certificate Verification Protocol (SCVP) client",{"type":23,"tag":211,"props":10725,"children":10726},{},[10727,10732],{"type":23,"tag":233,"props":10728,"children":10729},{},[10730],{"type":29,"value":10731},"SCVP Server",{"type":23,"tag":233,"props":10733,"children":10734},{},[10735],{"type":29,"value":10736},"SCVP server",{"type":23,"tag":211,"props":10738,"children":10739},{},[10740,10745],{"type":23,"tag":233,"props":10741,"children":10742},{},[10743],{"type":29,"value":10744},"SIP Domain",{"type":23,"tag":233,"props":10746,"children":10747},{},[10748],{"type":29,"value":10749},"VoIP\u002FSIP domain name authentication",{"type":23,"tag":211,"props":10751,"children":10752},{},[10753,10758],{"type":23,"tag":233,"props":10754,"children":10755},{},[10756],{"type":29,"value":10757},"SSH Client",{"type":23,"tag":233,"props":10759,"children":10760},{},[10761],{"type":29,"value":10762},"SSH client authentication",{"type":23,"tag":211,"props":10764,"children":10765},{},[10766,10771],{"type":23,"tag":233,"props":10767,"children":10768},{},[10769],{"type":29,"value":10770},"SSH Server",{"type":23,"tag":233,"props":10772,"children":10773},{},[10774],{"type":29,"value":10775},"SSH server authentication",{"type":23,"tag":211,"props":10777,"children":10778},{},[10779,10784],{"type":23,"tag":233,"props":10780,"children":10781},{},[10782],{"type":29,"value":10783},"codeSigning",{"type":23,"tag":233,"props":10785,"children":10786},{},[10787],{"type":29,"value":10788},"Software\u002FDriver signing",{"type":23,"tag":211,"props":10790,"children":10791},{},[10792,10797],{"type":23,"tag":233,"props":10793,"children":10794},{},[10795],{"type":29,"value":10796},"Any EKU",{"type":23,"tag":233,"props":10798,"children":10799},{},[10800],{"type":29,"value":10801},"Common EKU support",{"type":23,"tag":211,"props":10803,"children":10804},{},[10805,10810],{"type":23,"tag":233,"props":10806,"children":10807},{},[10808],{"type":29,"value":10809},"emailProtection",{"type":23,"tag":233,"props":10811,"children":10812},{},[10813],{"type":29,"value":10814},"S\u002FMIME email signing\u002Fencryption",{"type":23,"tag":211,"props":10816,"children":10817},{},[10818,10823],{"type":23,"tag":233,"props":10819,"children":10820},{},[10821],{"type":29,"value":10822},"clientAuth",{"type":23,"tag":233,"props":10824,"children":10825},{},[10826],{"type":29,"value":10827},"TLS client authentication",{"type":23,"tag":211,"props":10829,"children":10830},{},[10831,10836],{"type":23,"tag":233,"props":10832,"children":10833},{},[10834],{"type":29,"value":10835},"timeStamping",{"type":23,"tag":233,"props":10837,"children":10838},{},[10839],{"type":29,"value":10840},"Timestamp signing",{"type":23,"tag":211,"props":10842,"children":10843},{},[10844,10849],{"type":23,"tag":233,"props":10845,"children":10846},{},[10847],{"type":29,"value":10848},"serverAuth",{"type":23,"tag":233,"props":10850,"children":10851},{},[10852],{"type":29,"value":10853},"Server identity authentication (HTTPS, etc.)",{"type":23,"tag":4530,"props":10855,"children":10857},{"id":10856},"_76-name-extension",[10858],{"type":29,"value":10859},"7.6 Name Extension",{"type":23,"tag":203,"props":10861,"children":10862},{},[10863,10882],{"type":23,"tag":207,"props":10864,"children":10865},{},[10866],{"type":23,"tag":211,"props":10867,"children":10868},{},[10869,10873,10877],{"type":23,"tag":215,"props":10870,"children":10871},{},[10872],{"type":29,"value":10261},{"type":23,"tag":215,"props":10874,"children":10875},{},[10876],{"type":29,"value":6511},{"type":23,"tag":215,"props":10878,"children":10879},{},[10880],{"type":29,"value":10881},"Suggestion",{"type":23,"tag":226,"props":10883,"children":10884},{},[10885,10902,10920],{"type":23,"tag":211,"props":10886,"children":10887},{},[10888,10893,10898],{"type":23,"tag":233,"props":10889,"children":10890},{},[10891],{"type":29,"value":10892},"Subject Alt Name",{"type":23,"tag":233,"props":10894,"children":10895},{},[10896],{"type":29,"value":10897},"IP address, DNS, and Uemail can be used as certificate identifiers.",{"type":23,"tag":233,"props":10899,"children":10900},{},[10901],{"type":29,"value":10221},{"type":23,"tag":211,"props":10903,"children":10904},{},[10905,10910,10915],{"type":23,"tag":233,"props":10906,"children":10907},{},[10908],{"type":29,"value":10909},"Issuer Alternative Name",{"type":23,"tag":233,"props":10911,"children":10912},{},[10913],{"type":29,"value":10914},"Additional CA name.\tOptional",{"type":23,"tag":233,"props":10916,"children":10917},{},[10918],{"type":29,"value":10919},"Optional",{"type":23,"tag":211,"props":10921,"children":10922},{},[10923,10928,10933],{"type":23,"tag":233,"props":10924,"children":10925},{},[10926],{"type":29,"value":10927},"Name Constraints",{"type":23,"tag":233,"props":10929,"children":10930},{},[10931],{"type":29,"value":10932},"Constraints for subject namespaces.",{"type":23,"tag":233,"props":10934,"children":10935},{},[10936],{"type":29,"value":10937},"Optional (used in high-security scenarios)",{"type":23,"tag":4530,"props":10939,"children":10941},{"id":10940},"_77-validation-data",[10942],{"type":29,"value":10943},"7.7 Validation Data",{"type":23,"tag":203,"props":10945,"children":10946},{},[10947,10965],{"type":23,"tag":207,"props":10948,"children":10949},{},[10950],{"type":23,"tag":211,"props":10951,"children":10952},{},[10953,10957,10961],{"type":23,"tag":215,"props":10954,"children":10955},{},[10956],{"type":29,"value":10261},{"type":23,"tag":215,"props":10958,"children":10959},{},[10960],{"type":29,"value":6511},{"type":23,"tag":215,"props":10962,"children":10963},{},[10964],{"type":29,"value":10881},{"type":23,"tag":226,"props":10966,"children":10967},{},[10968,10985,11003],{"type":23,"tag":211,"props":10969,"children":10970},{},[10971,10976,10981],{"type":23,"tag":233,"props":10972,"children":10973},{},[10974],{"type":29,"value":10975},"CRL Distribution Point",{"type":23,"tag":233,"props":10977,"children":10978},{},[10979],{"type":29,"value":10980},"CRL URL",{"type":23,"tag":233,"props":10982,"children":10983},{},[10984],{"type":29,"value":10203},{"type":23,"tag":211,"props":10986,"children":10987},{},[10988,10993,10998],{"type":23,"tag":233,"props":10989,"children":10990},{},[10991],{"type":29,"value":10992},"Delta CRL（Freshest CRL）",{"type":23,"tag":233,"props":10994,"children":10995},{},[10996],{"type":29,"value":10997},"Incremental CRL",{"type":23,"tag":233,"props":10999,"children":11000},{},[11001],{"type":29,"value":11002},"Enable on demand",{"type":23,"tag":211,"props":11004,"children":11005},{},[11006,11011,11016],{"type":23,"tag":233,"props":11007,"children":11008},{},[11009],{"type":29,"value":11010},"Authority Information Access (AIA)",{"type":23,"tag":233,"props":11012,"children":11013},{},[11014],{"type":29,"value":11015},"OCSP\u002FCA information",{"type":23,"tag":233,"props":11017,"children":11018},{},[11019],{"type":29,"value":10123},{"type":23,"tag":4461,"props":11021,"children":11022},{},[],{"type":23,"tag":4530,"props":11024,"children":11026},{"id":11025},"_78-private-key-validity-period",[11027],{"type":29,"value":11028},"7.8 Private Key Validity Period",{"type":23,"tag":203,"props":11030,"children":11031},{},[11032,11046],{"type":23,"tag":207,"props":11033,"children":11034},{},[11035],{"type":23,"tag":211,"props":11036,"children":11037},{},[11038,11042],{"type":23,"tag":215,"props":11039,"children":11040},{},[11041],{"type":29,"value":10261},{"type":23,"tag":215,"props":11043,"children":11044},{},[11045],{"type":29,"value":6511},{"type":23,"tag":226,"props":11047,"children":11048},{},[11049,11062],{"type":23,"tag":211,"props":11050,"children":11051},{},[11052,11057],{"type":23,"tag":233,"props":11053,"children":11054},{},[11055],{"type":29,"value":11056},"Start Offset",{"type":23,"tag":233,"props":11058,"children":11059},{},[11060],{"type":29,"value":11061},"Start offset time of the private key",{"type":23,"tag":211,"props":11063,"children":11064},{},[11065,11070],{"type":23,"tag":233,"props":11066,"children":11067},{},[11068],{"type":29,"value":11069},"Period Length",{"type":23,"tag":233,"props":11071,"children":11072},{},[11073],{"type":29,"value":11074},"Validity period of the private key (independent of the certificate validity period)",{"type":23,"tag":4461,"props":11076,"children":11077},{},[],{"type":23,"tag":4530,"props":11079,"children":11081},{"id":11080},"_79-etsi-compliant-extensions-typically-for-high-compliance-pki-use-cases",[11082],{"type":29,"value":11083},"7.9 ETSI Compliant Extensions (Typically for High-compliance PKI Use Cases)",{"type":23,"tag":203,"props":11085,"children":11086},{},[11087,11101],{"type":23,"tag":207,"props":11088,"children":11089},{},[11090],{"type":23,"tag":211,"props":11091,"children":11092},{},[11093,11097],{"type":23,"tag":215,"props":11094,"children":11095},{},[11096],{"type":29,"value":10261},{"type":23,"tag":215,"props":11098,"children":11099},{},[11100],{"type":29,"value":6511},{"type":23,"tag":226,"props":11102,"children":11103},{},[11104,11117],{"type":23,"tag":211,"props":11105,"children":11106},{},[11107,11112],{"type":23,"tag":233,"props":11108,"children":11109},{},[11110],{"type":29,"value":11111},"Certifications Statement",{"type":23,"tag":233,"props":11113,"children":11114},{},[11115],{"type":29,"value":11116},"Identifies certificates used for legal or compliance purposes.",{"type":23,"tag":211,"props":11118,"children":11119},{},[11120,11125],{"type":23,"tag":233,"props":11121,"children":11122},{},[11123],{"type":29,"value":11124},"Assured validity",{"type":23,"tag":233,"props":11126,"children":11127},{},[11128],{"type":29,"value":11129},"Ensures the validity of short-term certificates.",{"type":23,"tag":4461,"props":11131,"children":11132},{},[],{"type":23,"tag":4530,"props":11134,"children":11136},{"id":11135},"_710-other-extensions",[11137],{"type":29,"value":11138},"7.10 Other Extensions",{"type":23,"tag":203,"props":11140,"children":11141},{},[11142,11158],{"type":23,"tag":207,"props":11143,"children":11144},{},[11145],{"type":23,"tag":211,"props":11146,"children":11147},{},[11148,11153],{"type":23,"tag":215,"props":11149,"children":11150},{},[11151],{"type":29,"value":11152},"Extension",{"type":23,"tag":215,"props":11154,"children":11155},{},[11156],{"type":29,"value":11157},"Usage",{"type":23,"tag":226,"props":11159,"children":11160},{},[11161,11174,11187],{"type":23,"tag":211,"props":11162,"children":11163},{},[11164,11169],{"type":23,"tag":233,"props":11165,"children":11166},{},[11167],{"type":29,"value":11168},"OCSP No Check",{"type":23,"tag":233,"props":11170,"children":11171},{},[11172],{"type":29,"value":11173},"Disables OCSP check (useful only for OCSP responders).",{"type":23,"tag":211,"props":11175,"children":11176},{},[11177,11182],{"type":23,"tag":233,"props":11178,"children":11179},{},[11180],{"type":29,"value":11181},"Microsoft Profile",{"type":23,"tag":233,"props":11183,"children":11184},{},[11185],{"type":29,"value":11186},"Value\tSpecial extensions for Windows AD integration",{"type":23,"tag":211,"props":11188,"children":11189},{},[11190,11195],{"type":23,"tag":233,"props":11191,"children":11192},{},[11193],{"type":29,"value":11194},"CA\u002FB Forum OID",{"type":23,"tag":233,"props":11196,"children":11197},{},[11198],{"type":29,"value":11199},"Identifier extension for CA\u002FB-compliant organization",{"type":23,"tag":4461,"props":11201,"children":11202},{},[],{"type":23,"tag":4530,"props":11204,"children":11206},{"id":11205},"_711-approval-settings-and-additional-fields",[11207],{"type":29,"value":11208},"7.11 Approval Settings and Additional Fields",{"type":23,"tag":203,"props":11210,"children":11211},{},[11212,11226],{"type":23,"tag":207,"props":11213,"children":11214},{},[11215],{"type":23,"tag":211,"props":11216,"children":11217},{},[11218,11222],{"type":23,"tag":215,"props":11219,"children":11220},{},[11221],{"type":29,"value":9746},{"type":23,"tag":215,"props":11223,"children":11224},{},[11225],{"type":29,"value":6511},{"type":23,"tag":226,"props":11227,"children":11228},{},[11229,11241,11253,11266,11279],{"type":23,"tag":211,"props":11230,"children":11231},{},[11232,11236],{"type":23,"tag":233,"props":11233,"children":11234},{},[11235],{"type":29,"value":7447},{"type":23,"tag":233,"props":11237,"children":11238},{},[11239],{"type":29,"value":11240},"Bound approval process",{"type":23,"tag":211,"props":11242,"children":11243},{},[11244,11248],{"type":23,"tag":233,"props":11245,"children":11246},{},[11247],{"type":29,"value":7470},{"type":23,"tag":233,"props":11249,"children":11250},{},[11251],{"type":29,"value":11252},"Whether key recovery is supported (for example, for backup and restoration)",{"type":23,"tag":211,"props":11254,"children":11255},{},[11256,11261],{"type":23,"tag":233,"props":11257,"children":11258},{},[11259],{"type":29,"value":11260},"Revocation Approval",{"type":23,"tag":233,"props":11262,"children":11263},{},[11264],{"type":29,"value":11265},"Whether approval is required for revocation",{"type":23,"tag":211,"props":11267,"children":11268},{},[11269,11274],{"type":23,"tag":233,"props":11270,"children":11271},{},[11272],{"type":29,"value":11273},"CN Suffix",{"type":23,"tag":233,"props":11275,"children":11276},{},[11277],{"type":29,"value":11278},"A character string automatically added to the end of Subject CN",{"type":23,"tag":211,"props":11280,"children":11281},{},[11282,11287],{"type":23,"tag":233,"props":11283,"children":11284},{},[11285],{"type":29,"value":11286},"Subject Subset Restriction",{"type":23,"tag":233,"props":11288,"children":11289},{},[11290],{"type":29,"value":11291},"Restriction on the Subject fields that can be used",{"type":23,"tag":4461,"props":11293,"children":11294},{},[],{"type":23,"tag":4530,"props":11296,"children":11298},{"id":11297},"_712-ca-release-settings",[11299],{"type":29,"value":11300},"7.12 CA & Release Settings",{"type":23,"tag":203,"props":11302,"children":11303},{},[11304,11318],{"type":23,"tag":207,"props":11305,"children":11306},{},[11307],{"type":23,"tag":211,"props":11308,"children":11309},{},[11310,11314],{"type":23,"tag":215,"props":11311,"children":11312},{},[11313],{"type":29,"value":10261},{"type":23,"tag":215,"props":11315,"children":11316},{},[11317],{"type":29,"value":6511},{"type":23,"tag":226,"props":11319,"children":11320},{},[11321,11334,11347,11360],{"type":23,"tag":211,"props":11322,"children":11323},{},[11324,11329],{"type":23,"tag":233,"props":11325,"children":11326},{},[11327],{"type":29,"value":11328},"Available CA",{"type":23,"tag":233,"props":11330,"children":11331},{},[11332],{"type":29,"value":11333},"CA that can use the certificate profile",{"type":23,"tag":211,"props":11335,"children":11336},{},[11337,11342],{"type":23,"tag":233,"props":11338,"children":11339},{},[11340],{"type":29,"value":11341},"Publisher",{"type":23,"tag":233,"props":11343,"children":11344},{},[11345],{"type":29,"value":11346},"Publishing to LDAP, databases, or external services",{"type":23,"tag":211,"props":11348,"children":11349},{},[11350,11355],{"type":23,"tag":233,"props":11351,"children":11352},{},[11353],{"type":29,"value":11354},"Single Certificate Limit",{"type":23,"tag":233,"props":11356,"children":11357},{},[11358],{"type":29,"value":11359},"Whether an end entity can have only one valid certificate",{"type":23,"tag":211,"props":11361,"children":11362},{},[11363,11368],{"type":23,"tag":233,"props":11364,"children":11365},{},[11366],{"type":29,"value":11367},"Account Binding Namespace",{"type":23,"tag":233,"props":11369,"children":11370},{},[11371],{"type":29,"value":11372},"Device account binding (for example, IoT)",{"type":23,"tag":4461,"props":11374,"children":11375},{},[],{"type":23,"tag":37,"props":11377,"children":11378},{},[11379],{"type":29,"value":11380},"To configure the code signing certificate profile, adjust the keyUsage and extendedKeyUsage fields.",{"type":23,"tag":4905,"props":11382,"children":11383},{},[11384],{"type":23,"tag":37,"props":11385,"children":11386},{},[11387],{"type":29,"value":11388},"📌 You are advised to create different profiles for different applications (such as VPN, HTTPS, code signing, and client authentication) to facilitate management and compliance control.",{"type":23,"tag":4461,"props":11390,"children":11391},{},[],{"type":23,"tag":4161,"props":11393,"children":11395},{"id":11394},"_8-approval-configuration-and-management",[11396],{"type":29,"value":11397},"8. Approval Configuration and Management",{"type":23,"tag":4530,"props":11399,"children":11401},{"id":11400},"_81-creating-an-approval-profile-approval-configuration",[11402],{"type":29,"value":11403},"8.1 Creating an Approval Profile (Approval Configuration)",{"type":23,"tag":4920,"props":11405,"children":11406},{},[11407,11417,11433],{"type":23,"tag":64,"props":11408,"children":11409},{},[11410,11411,11416],{"type":29,"value":6064},{"type":23,"tag":4453,"props":11412,"children":11413},{},[11414],{"type":29,"value":11415},"Watchdog > Approval Profiles",{"type":29,"value":52},{"type":23,"tag":64,"props":11418,"children":11419},{},[11420,11422,11426,11428,11432],{"type":29,"value":11421},"Type a name (for example, ",{"type":23,"tag":4453,"props":11423,"children":11424},{},[11425],{"type":29,"value":9339},{"type":29,"value":11427},") at the bottom and click ",{"type":23,"tag":4453,"props":11429,"children":11430},{},[11431],{"type":29,"value":6127},{"type":29,"value":52},{"type":23,"tag":64,"props":11434,"children":11435},{},[11436,11437,11442],{"type":29,"value":6102},{"type":23,"tag":4453,"props":11438,"children":11439},{},[11440],{"type":29,"value":11441},"Edit",{"type":29,"value":11443}," in the list to enter the detailed settings.",{"type":23,"tag":4530,"props":11445,"children":11447},{"id":11446},"_82-basic-parameter-settings",[11448],{"type":29,"value":11449},"8.2 Basic Parameter Settings",{"type":23,"tag":203,"props":11451,"children":11452},{},[11453,11468],{"type":23,"tag":207,"props":11454,"children":11455},{},[11456],{"type":23,"tag":211,"props":11457,"children":11458},{},[11459,11463],{"type":23,"tag":215,"props":11460,"children":11461},{},[11462],{"type":29,"value":9036},{"type":23,"tag":215,"props":11464,"children":11465},{},[11466],{"type":29,"value":11467},"Suggestion\u002FExample",{"type":23,"tag":226,"props":11469,"children":11470},{},[11471,11484,11497,11510,11523],{"type":23,"tag":211,"props":11472,"children":11473},{},[11474,11479],{"type":23,"tag":233,"props":11475,"children":11476},{},[11477],{"type":29,"value":11478},"Approval Profile Type",{"type":23,"tag":233,"props":11480,"children":11481},{},[11482],{"type":29,"value":11483},"Accumulative Approval Partitioned Approval (can be used in cross-department cases)",{"type":23,"tag":211,"props":11485,"children":11486},{},[11487,11492],{"type":23,"tag":233,"props":11488,"children":11489},{},[11490],{"type":29,"value":11491},"Request Expiration Period",{"type":23,"tag":233,"props":11493,"children":11494},{},[11495],{"type":29,"value":11496},"8h (The request will be voided if not approved within the expiration period.)",{"type":23,"tag":211,"props":11498,"children":11499},{},[11500,11505],{"type":23,"tag":233,"props":11501,"children":11502},{},[11503],{"type":29,"value":11504},"Approval Expiration Period",{"type":23,"tag":233,"props":11506,"children":11507},{},[11508],{"type":29,"value":11509},"8h (Re-approval is required after the expiration period.)",{"type":23,"tag":211,"props":11511,"children":11512},{},[11513,11518],{"type":23,"tag":233,"props":11514,"children":11515},{},[11516],{"type":29,"value":11517},"Max Extension Time",{"type":23,"tag":233,"props":11519,"children":11520},{},[11521],{"type":29,"value":11522},"0d (The period cannot be extended.)",{"type":23,"tag":211,"props":11524,"children":11525},{},[11526,11531],{"type":23,"tag":233,"props":11527,"children":11528},{},[11529],{"type":29,"value":11530},"Allow Self Approved Request Editing",{"type":23,"tag":233,"props":11532,"children":11533},{},[11534],{"type":29,"value":11535},"Deselected (Self-approval is prohibited in production.)",{"type":23,"tag":4530,"props":11537,"children":11539},{"id":11538},"_83-approval-steps",[11540],{"type":29,"value":11541},"8.3 Approval Steps",{"type":23,"tag":4920,"props":11543,"children":11544},{},[11545,11584],{"type":23,"tag":64,"props":11546,"children":11547},{},[11548,11550,11556,11557],{"type":29,"value":11549},"Set ",{"type":23,"tag":140,"props":11551,"children":11553},{"className":11552},[],[11554],{"type":29,"value":11555},"Number of Required Approvals",{"type":29,"value":52},{"type":23,"tag":60,"props":11558,"children":11559},{},[11560,11572],{"type":23,"tag":64,"props":11561,"children":11562},{},[11563,11565,11570],{"type":29,"value":11564},"Development\u002FTest: ",{"type":23,"tag":140,"props":11566,"children":11568},{"className":11567},[],[11569],{"type":29,"value":738},{"type":29,"value":11571}," (1-of-1).",{"type":23,"tag":64,"props":11573,"children":11574},{},[11575,11577,11582],{"type":29,"value":11576},"Production\u002FSensitive operations: ",{"type":23,"tag":140,"props":11578,"children":11580},{"className":11579},[],[11581],{"type":29,"value":1316},{"type":29,"value":11583}," (2-of-2) or partitioned approval.",{"type":23,"tag":64,"props":11585,"children":11586},{},[11587,11589],{"type":29,"value":11588},"Notification email:",{"type":23,"tag":60,"props":11590,"children":11591},{},[11592,11608,11624,11637],{"type":23,"tag":64,"props":11593,"children":11594},{},[11595,11601,11602],{"type":23,"tag":140,"props":11596,"children":11598},{"className":11597},[],[11599],{"type":29,"value":11600},"Notification message email recipient",{"type":29,"value":693},{"type":23,"tag":140,"props":11603,"children":11605},{"className":11604},[],[11606],{"type":29,"value":11607},"approval-admin-group@example.org supervisor@example.org",{"type":23,"tag":64,"props":11609,"children":11610},{},[11611,11617,11618],{"type":23,"tag":140,"props":11612,"children":11614},{"className":11613},[],[11615],{"type":29,"value":11616},"Notification message email sender",{"type":29,"value":693},{"type":23,"tag":140,"props":11619,"children":11621},{"className":11620},[],[11622],{"type":29,"value":11623},"no-reply@192.168.xxx.xx",{"type":23,"tag":64,"props":11625,"children":11626},{},[11627,11629],{"type":29,"value":11628},"Example theme profile:\n",{"type":23,"tag":341,"props":11630,"children":11632},{"code":11631},"[AR-${approvalRequest.ID}-${approvalRequest.STEP_ID}-${approvalRequest.PARTITION_ID}] Approval Request\n",[11633],{"type":23,"tag":140,"props":11634,"children":11635},{"__ignoreMap":9},[11636],{"type":29,"value":11631},{"type":23,"tag":64,"props":11638,"children":11639},{},[11640,11642,11648,11649,11655,11657,11663],{"type":29,"value":11641},"Variables that can be referenced in the body: ",{"type":23,"tag":140,"props":11643,"children":11645},{"className":11644},[],[11646],{"type":29,"value":11647},"${approvalRequest.TYPE}",{"type":29,"value":6141},{"type":23,"tag":140,"props":11650,"children":11652},{"className":11651},[],[11653],{"type":29,"value":11654},"${approvalRequest.REQUESTOR}",{"type":29,"value":11656},", and ",{"type":23,"tag":140,"props":11658,"children":11660},{"className":11659},[],[11661],{"type":29,"value":11662},"${approvalRequest.WORKFLOWSTATE}",{"type":29,"value":52},{"type":23,"tag":4530,"props":11665,"children":11667},{"id":11666},"_84-binding-to-a-specific-action",[11668],{"type":29,"value":11669},"8.4 Binding to a Specific Action",{"type":23,"tag":37,"props":11671,"children":11672},{},[11673],{"type":23,"tag":4453,"props":11674,"children":11675},{},[11676],{"type":29,"value":11677},"End Entity Profile:",{"type":23,"tag":37,"props":11679,"children":11680},{},[11681,11682,11693,11695,11700],{"type":29,"value":6064},{"type":23,"tag":4453,"props":11683,"children":11684},{},[11685,11687],{"type":29,"value":11686},"CA Functions > End Entity Profiles > ",{"type":23,"tag":11688,"props":11689,"children":11690},"profile",{},[11691],{"type":29,"value":11692}," > Approval Settings>",{"type":29,"value":11694}," Add\u002FEdit End Entity to be approved > Approval Profile and then click ",{"type":23,"tag":4453,"props":11696,"children":11697},{},[11698],{"type":29,"value":11699},"Save",{"type":29,"value":52},{"type":23,"tag":37,"props":11702,"children":11703},{},[11704,11706,11710,11712,11716],{"type":29,"value":11705},"Common options: ",{"type":23,"tag":4453,"props":11707,"children":11708},{},[11709],{"type":29,"value":7447},{"type":29,"value":11711}," and ",{"type":23,"tag":4453,"props":11713,"children":11714},{},[11715],{"type":29,"value":7470},{"type":29,"value":11717}," (if enabled)",{"type":23,"tag":37,"props":11719,"children":11720},{},[11721],{"type":23,"tag":4453,"props":11722,"children":11723},{},[11724],{"type":29,"value":11725},"Certificate Profile:",{"type":23,"tag":37,"props":11727,"children":11728},{},[11729,11730,11740,11742,11746],{"type":29,"value":6064},{"type":23,"tag":4453,"props":11731,"children":11732},{},[11733,11735],{"type":29,"value":11734},"CA Functions > Certificate Profiles > ",{"type":23,"tag":11688,"props":11736,"children":11737},{},[11738],{"type":29,"value":11739}," > Approval Settings > Operation > Approval Profile",{"type":29,"value":11741}," and then click ",{"type":23,"tag":4453,"props":11743,"children":11744},{},[11745],{"type":29,"value":11699},{"type":29,"value":52},{"type":23,"tag":37,"props":11748,"children":11749},{},[11750,11755],{"type":23,"tag":4453,"props":11751,"children":11752},{},[11753],{"type":29,"value":11754},"Sensitive administrator actions",{"type":29,"value":11756},": It is recommended that 2-of-2 or partitioned approval be used for intermediate CA change and revocation.",{"type":23,"tag":4530,"props":11758,"children":11760},{"id":11759},"_85-testing-and-verification",[11761],{"type":29,"value":11762},"8.5 Testing and Verification",{"type":23,"tag":4920,"props":11764,"children":11765},{},[11766,11771,11776],{"type":23,"tag":64,"props":11767,"children":11768},{},[11769],{"type":29,"value":11770},"Use a common RA account to start an operation (for example, creating an end entity) that requires approval on the RA WebUI.",{"type":23,"tag":64,"props":11772,"children":11773},{},[11774],{"type":29,"value":11775},"Choose Inspector Function > Approvals to check the approval queue, and use another approver account to complete the approval.",{"type":23,"tag":64,"props":11777,"children":11778},{},[11779],{"type":29,"value":11780},"Confirm that the operation was executed automatically and the email notification was received successfully.",{"type":23,"tag":4530,"props":11782,"children":11784},{"id":11783},"_86-faqs",[11785],{"type":29,"value":11786},"8.6 FAQs",{"type":23,"tag":60,"props":11788,"children":11789},{},[11790,11795,11800,11805],{"type":23,"tag":64,"props":11791,"children":11792},{},[11793],{"type":29,"value":11794},"No email received: Check the SMTP configuration, firewall, and recipient name, and view container logs.",{"type":23,"tag":64,"props":11796,"children":11797},{},[11798],{"type":29,"value":11799},"Stuck in pending status: Number of Required Approvals is set too high or the approver does not have the permission.",{"type":23,"tag":64,"props":11801,"children":11802},{},[11803],{"type":29,"value":11804},"Can be self-approved: Allow Self Approved Request Editing is selected by mistake. This function should be disabled in production.",{"type":23,"tag":64,"props":11806,"children":11807},{},[11808],{"type":29,"value":11809},"Expired: Request\u002FApproval Expiration is set too short. The value can be changed to 8h to 24h.",{"type":23,"tag":4161,"props":11811,"children":11813},{"id":11812},"_9-end-entity-profile-settings",[11814],{"type":29,"value":11815},"9. End Entity Profile Settings",{"type":23,"tag":37,"props":11817,"children":11818},{},[11819,11821,11826],{"type":29,"value":11820},"Path: ",{"type":23,"tag":4453,"props":11822,"children":11823},{},[11824],{"type":29,"value":11825},"RA Functions > End Entity Profiles",{"type":29,"value":11827},". The End Entity Profile defines the fields that can be populated, specifies which are mandatory or modifiable, and determines the default Certificate Profile, CA, and Token.",{"type":23,"tag":4530,"props":11829,"children":11831},{"id":11830},"_91-creating-and-opening-an-end-entity-profile",[11832],{"type":29,"value":11833},"9.1 Creating and Opening an End Entity Profile",{"type":23,"tag":4920,"props":11835,"children":11836},{},[11837,11842,11847],{"type":23,"tag":64,"props":11838,"children":11839},{},[11840],{"type":29,"value":11841},"Choose RA Functions > End Entity Profiles.",{"type":23,"tag":64,"props":11843,"children":11844},{},[11845],{"type":29,"value":11846},"Enter the profile name (for example, test) at the bottom and click Add Profile.",{"type":23,"tag":64,"props":11848,"children":11849},{},[11850],{"type":29,"value":11851},"Select the profile from the list and click Edit Endpoint Entity Profile.",{"type":23,"tag":4530,"props":11853,"children":11855},{"id":11854},"_92-basic-information-usernamepasswordemail",[11856],{"type":29,"value":11857},"9.2 Basic Information (Username\u002FPassword\u002FEmail)",{"type":23,"tag":37,"props":11859,"children":11860},{},[11861,11863,11868,11870,11875,11877,11882],{"type":29,"value":11862},"Generally, the ",{"type":23,"tag":4453,"props":11864,"children":11865},{},[11866],{"type":29,"value":11867},"username\u002Fpassword",{"type":29,"value":11869}," does not need to be specified in the profile. The profile only sets the rules and methods. The ",{"type":23,"tag":4453,"props":11871,"children":11872},{},[11873],{"type":29,"value":11874},"username\u002Fpassword\u002Fenrollment code",{"type":29,"value":11876}," can be specified ",{"type":23,"tag":4453,"props":11878,"children":11879},{},[11880],{"type":29,"value":11881},"during end entity creation or application submission",{"type":29,"value":52},{"type":23,"tag":37,"props":11884,"children":11885},{},[11886],{"type":23,"tag":4453,"props":11887,"children":11888},{},[11889],{"type":29,"value":11890},"Recommended practice",{"type":23,"tag":60,"props":11892,"children":11893},{},[11894,11899,11904,11909,11914,11919],{"type":23,"tag":64,"props":11895,"children":11896},{},[11897],{"type":29,"value":11898},"Username: Select Auto-generated (for auto and batch operations), or manually specify the username when creating an end entity.",{"type":23,"tag":64,"props":11900,"children":11901},{},[11902],{"type":29,"value":11903},"Password (or Enrollment Code): Select Required to use the one-off Enrollment Code. Enter the specific value when creating an end entity or submitting the application on the RA.",{"type":23,"tag":64,"props":11905,"children":11906},{},[11907],{"type":29,"value":11908},"Minimum password strength\u002Flength: Retain the policy (for example, the length is greater than or equal to 8), but do not enter the specific password.",{"type":23,"tag":64,"props":11910,"children":11911},{},[11912],{"type":29,"value":11913},"Maximum number of failed login attempts: Set the number as needed. Select Modifiable if you need to temporarily change this limit.",{"type":23,"tag":64,"props":11915,"children":11916},{},[11917],{"type":29,"value":11918},"Batch generation: Disable this function. Avoid storing enrollment codes in plaintext.",{"type":23,"tag":64,"props":11920,"children":11921},{},[11922],{"type":29,"value":11923},"E-mail: Set it based on the Required\u002FModifiable setting. It is used for notification and identification.",{"type":23,"tag":37,"props":11925,"children":11926},{},[11927],{"type":23,"tag":4453,"props":11928,"children":11929},{},[11930],{"type":29,"value":11931},"Impact of different application paths on username\u002Fpassword",{"type":23,"tag":60,"props":11933,"children":11934},{},[11935,11940,11945],{"type":23,"tag":64,"props":11936,"children":11937},{},[11938],{"type":29,"value":11939},"RA Web > Enroll > Use Username: Username and Password\u002FEnrollment Code are specified when an end entity is created. The user uses this account to log in to the system and obtain the certificate.",{"type":23,"tag":64,"props":11941,"children":11942},{},[11943],{"type":29,"value":11944},"RA Web > Enroll > Use Request ID: The system allocates Request ID. Password\u002FEnrollment Code is set when the request is created. The applicant uses the ID and code to obtain the certificate.",{"type":23,"tag":64,"props":11946,"children":11947},{},[11948],{"type":29,"value":11949},"User Generated (CSR): Token=User Generated. Retain Required to generate a one-off code. The applicant uses the CSR and code to complete the issuance.",{"type":23,"tag":37,"props":11951,"children":11952},{},[11953],{"type":23,"tag":4453,"props":11954,"children":11955},{},[11956],{"type":29,"value":11957},"Directives",{"type":23,"tag":60,"props":11959,"children":11960},{},[11961,11966,11971],{"type":23,"tag":64,"props":11962,"children":11963},{},[11964],{"type":29,"value":11965},"Reverse Subject DN and Subject Alt Name Checks: You can also deselect this option.",{"type":23,"tag":64,"props":11967,"children":11968},{},[11969],{"type":29,"value":11970},"Allow merge DN for all interfaces: Generally, this option is not selected. It is selected only when DN combination is required for multiple APIs.",{"type":23,"tag":64,"props":11972,"children":11973},{},[11974],{"type":29,"value":11975},"Allow multi-value RDNs: This option is selected only when special requirements are met. (It is disabled by default, which is more secure.)",{"type":23,"tag":4530,"props":11977,"children":11979},{"id":11978},"_93-subject-dn-attributessetting-by-users",[11980],{"type":29,"value":11981},"9.3 Subject DN Attributes—(Setting by Users)",{"type":23,"tag":37,"props":11983,"children":11984},{},[11985,11987,11992],{"type":29,"value":11986},"Available attributes are displayed on the left, and selected attributes are displayed on the right. Add the required fields to the right and set ",{"type":23,"tag":4453,"props":11988,"children":11989},{},[11990],{"type":29,"value":11991},"Required\u002FModifiable\u002FValidation",{"type":29,"value":11993}," for each field.",{"type":23,"tag":37,"props":11995,"children":11996},{},[11997],{"type":23,"tag":4453,"props":11998,"children":11999},{},[12000],{"type":29,"value":12001},"Common recommendations (client\u002Fgeneral):",{"type":23,"tag":203,"props":12003,"children":12004},{},[12005,12019],{"type":23,"tag":207,"props":12006,"children":12007},{},[12008],{"type":23,"tag":211,"props":12009,"children":12010},{},[12011,12015],{"type":23,"tag":215,"props":12012,"children":12013},{},[12014],{"type":29,"value":9036},{"type":23,"tag":215,"props":12016,"children":12017},{},[12018],{"type":29,"value":10881},{"type":23,"tag":226,"props":12020,"children":12021},{},[12022,12035,12048,12061],{"type":23,"tag":211,"props":12023,"children":12024},{},[12025,12030],{"type":23,"tag":233,"props":12026,"children":12027},{},[12028],{"type":29,"value":12029},"CN, Common name",{"type":23,"tag":233,"props":12031,"children":12032},{},[12033],{"type":29,"value":12034},"Required; Modifiable is determined by the RA.",{"type":23,"tag":211,"props":12036,"children":12037},{},[12038,12043],{"type":23,"tag":233,"props":12039,"children":12040},{},[12041],{"type":29,"value":12042},"emailAddress, E-mail address in DN",{"type":23,"tag":233,"props":12044,"children":12045},{},[12046],{"type":29,"value":12047},"Optional. To bind with the email system, set it to Required.",{"type":23,"tag":211,"props":12049,"children":12050},{},[12051,12056],{"type":23,"tag":233,"props":12052,"children":12053},{},[12054],{"type":29,"value":12055},"O, Organization \u002F OU, Org. Unit",{"type":23,"tag":233,"props":12057,"children":12058},{},[12059],{"type":29,"value":12060},"Service-dependent. You are advised to disable Modifiable to prevent arbitrary input.",{"type":23,"tag":211,"props":12062,"children":12063},{},[12064,12069],{"type":23,"tag":233,"props":12065,"children":12066},{},[12067],{"type":29,"value":12068},"C, Country",{"type":23,"tag":233,"props":12070,"children":12071},{},[12072],{"type":29,"value":12073},"The value is fixed to CN or the country where the user is located. Generally, the value cannot be changed.",{"type":23,"tag":37,"props":12075,"children":12076},{},[12077,12079,12084],{"type":29,"value":12078},"If stricter verification is required, you can specify a regular expression or format rule in ",{"type":23,"tag":4453,"props":12080,"children":12081},{},[12082],{"type":29,"value":12083},"Validation",{"type":29,"value":52},{"type":23,"tag":4530,"props":12086,"children":12088},{"id":12087},"_94-other-subject-attributessetting-by-users",[12089,12091,12096],{"type":29,"value":12090},"9.4 ",{"type":23,"tag":4453,"props":12092,"children":12093},{},[12094],{"type":29,"value":12095},"Other Subject Attributes",{"type":29,"value":12097},"—(Setting by Users)",{"type":23,"tag":37,"props":12099,"children":12100},{},[12101],{"type":23,"tag":4453,"props":12102,"children":12103},{},[12104],{"type":29,"value":12105},"Subject Alternative Name (SAN) :",{"type":23,"tag":60,"props":12107,"children":12108},{},[12109,12114,12119],{"type":23,"tag":64,"props":12110,"children":12111},{},[12112],{"type":29,"value":12113},"Client certificate: RFC 822 Name (e-mail address) (same as the account email address)",{"type":23,"tag":64,"props":12115,"children":12116},{},[12117],{"type":29,"value":12118},"Server certificate: DNS Name and IP Address (added by domain name\u002FIP address)",{"type":23,"tag":64,"props":12120,"children":12121},{},[12122],{"type":29,"value":12123},"Device certificate: OtherName (written into the device ID\u002FOID)",{"type":23,"tag":37,"props":12125,"children":12126},{},[12127,12129],{"type":29,"value":12128},"(Optional) **",{"type":23,"tag":4453,"props":12130,"children":12131},{},[12132],{"type":29,"value":12133},"Subject Directory Attributes:",{"type":23,"tag":37,"props":12135,"children":12136},{},[12137,12139,12144],{"type":29,"value":12138},"Attributes such as ",{"type":23,"tag":4453,"props":12140,"children":12141},{},[12142],{"type":29,"value":12143},"Date of birth (YYYYMMDD)",{"type":29,"value":12145}," are used only for archiving or compliance needs. You are advised not to enable multiple directory attributes.",{"type":23,"tag":37,"props":12147,"children":12148},{},[12149,12151,12155,12157,12161,12163,12168],{"type":29,"value":12150},"Addition method: Select an item in the ",{"type":23,"tag":4453,"props":12152,"children":12153},{},[12154],{"type":29,"value":12095},{"type":29,"value":12156}," area and click ",{"type":23,"tag":4453,"props":12158,"children":12159},{},[12160],{"type":29,"value":6127},{"type":29,"value":12162},". You can also mark it as ",{"type":23,"tag":4453,"props":12164,"children":12165},{},[12166],{"type":29,"value":12167},"Required\u002FModifiable",{"type":29,"value":12169}," if supported by the interface.",{"type":23,"tag":4530,"props":12171,"children":12173},{"id":12172},"_95-main-certificate-data",[12174],{"type":29,"value":12175},"9.5 Main Certificate Data",{"type":23,"tag":203,"props":12177,"children":12178},{},[12179,12194],{"type":23,"tag":207,"props":12180,"children":12181},{},[12182],{"type":23,"tag":211,"props":12183,"children":12184},{},[12185,12189],{"type":23,"tag":215,"props":12186,"children":12187},{},[12188],{"type":29,"value":9036},{"type":23,"tag":215,"props":12190,"children":12191},{},[12192],{"type":29,"value":12193},"Suggestion\u002FDescription",{"type":23,"tag":226,"props":12195,"children":12196},{},[12197,12210,12223,12236],{"type":23,"tag":211,"props":12198,"children":12199},{},[12200,12205],{"type":23,"tag":233,"props":12201,"children":12202},{},[12203],{"type":29,"value":12204},"Default Certificate Profile",{"type":23,"tag":233,"props":12206,"children":12207},{},[12208],{"type":29,"value":12209},"Select a certificate profile (for example, ENDUSER or SERVER).",{"type":23,"tag":211,"props":12211,"children":12212},{},[12213,12218],{"type":23,"tag":233,"props":12214,"children":12215},{},[12216],{"type":29,"value":12217},"Available Certificate Profiles",{"type":23,"tag":233,"props":12219,"children":12220},{},[12221],{"type":29,"value":12222},"Select only the allowed profiles.",{"type":23,"tag":211,"props":12224,"children":12225},{},[12226,12231],{"type":23,"tag":233,"props":12227,"children":12228},{},[12229],{"type":29,"value":12230},"Default CA \u002F Available CAs",{"type":23,"tag":233,"props":12232,"children":12233},{},[12234],{"type":29,"value":12235},"Specify the CAs that can issue the certificate. Note: Changing the available CAs impacts which roles can access the profile.",{"type":23,"tag":211,"props":12237,"children":12238},{},[12239,12244],{"type":23,"tag":233,"props":12240,"children":12241},{},[12242],{"type":29,"value":12243},"Default Token \u002F Available Tokens",{"type":23,"tag":233,"props":12245,"children":12246},{},[12247],{"type":29,"value":12248},"P12 file (downloaded directly on the RA) or User Generated (CSR created by the user)",{"type":23,"tag":4530,"props":12250,"children":12252},{"id":12251},"_96-other-certificate-data",[12253],{"type":29,"value":12254},"9.6 Other Certificate Data",{"type":23,"tag":60,"props":12256,"children":12257},{},[12258,12268,12278,12288],{"type":23,"tag":64,"props":12259,"children":12260},{},[12261,12266],{"type":23,"tag":4453,"props":12262,"children":12263},{},[12264],{"type":29,"value":12265},"Custom certificate serial number",{"type":29,"value":12267},": disabled by default",{"type":23,"tag":64,"props":12269,"children":12270},{},[12271,12276],{"type":23,"tag":4453,"props":12272,"children":12273},{},[12274],{"type":29,"value":12275},"Certificate Validity Start\u002FEnd Time",{"type":29,"value":12277},": controlled by Certificate Profile by default. If a temporary certificate is required, enable this item and select Modifiable.",{"type":23,"tag":64,"props":12279,"children":12280},{},[12281,12286],{"type":23,"tag":4453,"props":12282,"children":12283},{},[12284],{"type":29,"value":12285},"Name Constraints (Permitted\u002FExcluded)",{"type":29,"value":12287},": used for intermediate CAs. Generally, this item is disabled in end entity profiles.",{"type":23,"tag":64,"props":12289,"children":12290},{},[12291,12296],{"type":23,"tag":4453,"props":12292,"children":12293},{},[12294],{"type":29,"value":12295},"Custom certificate extension data \u002F ETSI PSD2 QC Statement \u002F CA\u002FB Forum Organization Identifier",{"type":29,"value":12297},": Enable it as required for compliance.",{"type":23,"tag":4530,"props":12299,"children":12301},{"id":12300},"_97-other-datarestrictions",[12302],{"type":29,"value":12303},"9.7 Other Data\u002FRestrictions",{"type":23,"tag":203,"props":12305,"children":12306},{},[12307,12321],{"type":23,"tag":207,"props":12308,"children":12309},{},[12310],{"type":23,"tag":211,"props":12311,"children":12312},{},[12313,12317],{"type":23,"tag":215,"props":12314,"children":12315},{},[12316],{"type":29,"value":9036},{"type":23,"tag":215,"props":12318,"children":12319},{},[12320],{"type":29,"value":10881},{"type":23,"tag":226,"props":12322,"children":12323},{},[12324,12346,12379,12401,12418],{"type":23,"tag":211,"props":12325,"children":12326},{},[12327,12336],{"type":23,"tag":233,"props":12328,"children":12329},{},[12330],{"type":23,"tag":140,"props":12331,"children":12333},{"className":12332},[],[12334],{"type":29,"value":12335},"Number of allowed requests",{"type":23,"tag":233,"props":12337,"children":12338},{},[12339,12344],{"type":23,"tag":140,"props":12340,"children":12342},{"className":12341},[],[12343],{"type":29,"value":738},{"type":29,"value":12345}," (preventing repeated issuance)",{"type":23,"tag":211,"props":12347,"children":12348},{},[12349,12358],{"type":23,"tag":233,"props":12350,"children":12351},{},[12352],{"type":23,"tag":140,"props":12353,"children":12355},{"className":12354},[],[12356],{"type":29,"value":12357},"Allow renewal before expiration",{"type":23,"tag":233,"props":12359,"children":12360},{},[12361,12363,12369,12371,12377],{"type":29,"value":12362},"Example: ",{"type":23,"tag":140,"props":12364,"children":12366},{"className":12365},[],[12367],{"type":29,"value":12368},"30",{"type":29,"value":12370}," days. ",{"type":23,"tag":140,"props":12372,"children":12374},{"className":12373},[],[12375],{"type":29,"value":12376},"-1",{"type":29,"value":12378}," indicates no limit.",{"type":23,"tag":211,"props":12380,"children":12381},{},[12382,12391],{"type":23,"tag":233,"props":12383,"children":12384},{},[12385],{"type":23,"tag":140,"props":12386,"children":12388},{"className":12387},[],[12389],{"type":29,"value":12390},"Revocation reason to set after certificate issuance",{"type":23,"tag":233,"props":12392,"children":12393},{},[12394,12399],{"type":23,"tag":140,"props":12395,"children":12397},{"className":12396},[],[12398],{"type":29,"value":6270},{"type":29,"value":12400}," by default (typically left unchanged)",{"type":23,"tag":211,"props":12402,"children":12403},{},[12404,12413],{"type":23,"tag":233,"props":12405,"children":12406},{},[12407],{"type":23,"tag":140,"props":12408,"children":12410},{"className":12409},[],[12411],{"type":29,"value":12412},"Redact Subject Name from logs",{"type":23,"tag":233,"props":12414,"children":12415},{},[12416],{"type":29,"value":12417},"Enable this feature only for strict privacy or compliance needs.",{"type":23,"tag":211,"props":12419,"children":12420},{},[12421,12430],{"type":23,"tag":233,"props":12422,"children":12423},{},[12424],{"type":23,"tag":140,"props":12425,"children":12427},{"className":12426},[],[12428],{"type":29,"value":12429},"Send Notification",{"type":23,"tag":233,"props":12431,"children":12432},{},[12433],{"type":29,"value":12434},"Enable it when needed for SMTP settings.",{"type":23,"tag":4530,"props":12436,"children":12438},{"id":12437},"_98-saving-and-authorization",[12439],{"type":29,"value":12440},"9.8 Saving and Authorization",{"type":23,"tag":4920,"props":12442,"children":12443},{},[12444,12453,12464],{"type":23,"tag":64,"props":12445,"children":12446},{},[12447,12448,12452],{"type":29,"value":6102},{"type":23,"tag":4453,"props":12449,"children":12450},{},[12451],{"type":29,"value":11699},{"type":29,"value":52},{"type":23,"tag":64,"props":12454,"children":12455},{},[12456,12457,12462],{"type":29,"value":6064},{"type":23,"tag":4453,"props":12458,"children":12459},{},[12460],{"type":29,"value":12461},"RA Web > Role Management",{"type":29,"value":12463}," and check that the related role has been authorized to use the end entity profile (visible\u002Fcreatable).",{"type":23,"tag":64,"props":12465,"children":12466},{},[12467,12468,12472,12474],{"type":29,"value":6064},{"type":23,"tag":4453,"props":12469,"children":12470},{},[12471],{"type":29,"value":9505},{"type":29,"value":12473}," and use the profile to create a test user to check the following:\n",{"type":23,"tag":60,"props":12475,"children":12476},{},[12477,12482,12493],{"type":23,"tag":64,"props":12478,"children":12479},{},[12480],{"type":29,"value":12481},"Check whether the DN\u002FSAN is added to the database according to the rules.",{"type":23,"tag":64,"props":12483,"children":12484},{},[12485,12487,12492],{"type":29,"value":12486},"Check whether the certificate uses the expected ",{"type":23,"tag":4453,"props":12488,"children":12489},{},[12490],{"type":29,"value":12491},"Certificate Profile\u002FCA\u002FToken",{"type":29,"value":52},{"type":23,"tag":64,"props":12494,"children":12495},{},[12496],{"type":29,"value":12497},"Check whether the download or import is successful (P12\u002FPEM\u002FCSR process).",{"type":23,"tag":4461,"props":12499,"children":12500},{},[],{"type":23,"tag":4161,"props":12502,"children":12504},{"id":12503},"_10-applying-for-an-end-entity-certificate-as-an-ra-common-user",[12505],{"type":29,"value":12506},"10. Applying for an End Entity Certificate as an RA Common User",{"type":23,"tag":4905,"props":12508,"children":12509},{},[12510,12520],{"type":23,"tag":37,"props":12511,"children":12512},{},[12513,12514,12519],{"type":29,"value":6064},{"type":23,"tag":4453,"props":12515,"children":12516},{},[12517],{"type":29,"value":12518},"RA Web → Enroll",{"type":29,"value":6173},{"type":23,"tag":37,"props":12521,"children":12522},{},[12523,12525,12530],{"type":29,"value":12524},"By default, you are advised to use ",{"type":23,"tag":4453,"props":12526,"children":12527},{},[12528],{"type":29,"value":12529},"By the CA",{"type":29,"value":12531}," (the CA generates the key) for stability and fewer errors; no CSR is needed.",{"type":23,"tag":4530,"props":12533,"children":12535},{"id":12534},"_101-path-and-prerequisites",[12536],{"type":29,"value":12537},"10.1 Path and Prerequisites",{"type":23,"tag":60,"props":12539,"children":12540},{},[12541,12560],{"type":23,"tag":64,"props":12542,"children":12543},{},[12544,12546,12551,12553,12558],{"type":29,"value":12545},"Profiles have been prepared in ",{"type":23,"tag":4453,"props":12547,"children":12548},{},[12549],{"type":29,"value":12550},"End Entity Profiles",{"type":29,"value":12552}," (Section 9) and ",{"type":23,"tag":4453,"props":12554,"children":12555},{},[12556],{"type":29,"value":12557},"Certificate Profiles",{"type":29,"value":12559},". Users have access permission.",{"type":23,"tag":64,"props":12561,"children":12562},{},[12563],{"type":29,"value":12564},"When approval is enabled (see Section 8), submissions go into the pending queue. Certificates are issued once they are approved.",{"type":23,"tag":4530,"props":12566,"children":12568},{"id":12567},"_102-recommended-by-the-ca-no-csr-required",[12569],{"type":29,"value":12570},"10.2 Recommended: By the CA (No CSR Required)",{"type":23,"tag":4920,"props":12572,"children":12573},{},[12574,12584,12602,12618,12637],{"type":23,"tag":64,"props":12575,"children":12576},{},[12577,12578,12583],{"type":29,"value":6064},{"type":23,"tag":4453,"props":12579,"children":12580},{},[12581],{"type":29,"value":12582},"Enroll > Make New Request",{"type":29,"value":52},{"type":23,"tag":64,"props":12585,"children":12586},{},[12587,12588,12593,12595,12600],{"type":29,"value":9156},{"type":23,"tag":4453,"props":12589,"children":12590},{},[12591],{"type":29,"value":12592},"Certificate Type",{"type":29,"value":12594}," (End Entity Profile) and ",{"type":23,"tag":4453,"props":12596,"children":12597},{},[12598],{"type":29,"value":12599},"Certificate subtype",{"type":29,"value":12601}," (Certificate Profile).",{"type":23,"tag":64,"props":12603,"children":12604},{},[12605,12606,12611,12613,12617],{"type":29,"value":11549},{"type":23,"tag":4453,"props":12607,"children":12608},{},[12609],{"type":29,"value":12610},"Keypair generation",{"type":29,"value":12612}," to ",{"type":23,"tag":4453,"props":12614,"children":12615},{},[12616],{"type":29,"value":12529},{"type":29,"value":52},{"type":23,"tag":64,"props":12619,"children":12620},{},[12621,12623,12628,12630,12635],{"type":29,"value":12622},"Expand ",{"type":23,"tag":4453,"props":12624,"children":12625},{},[12626],{"type":29,"value":12627},"Provide request info",{"type":29,"value":12629}," and enter ",{"type":23,"tag":4453,"props":12631,"children":12632},{},[12633],{"type":29,"value":12634},"Subject DN \u002F SAN",{"type":29,"value":12636}," (such as CN, email address, DNS, and IP address) as required.",{"type":23,"tag":64,"props":12638,"children":12639},{},[12640,12642,12648],{"type":29,"value":12641},"Download the ",{"type":23,"tag":140,"props":12643,"children":12645},{"className":12644},[],[12646],{"type":29,"value":12647},"*.p12",{"type":29,"value":12649}," file.",{"type":23,"tag":4530,"props":12651,"children":12653},{"id":12652},"_103-optional-provided-by-user-uploading-a-csr",[12654],{"type":29,"value":12655},"10.3 Optional: Provided by user (Uploading a CSR)",{"type":23,"tag":4905,"props":12657,"children":12658},{},[12659],{"type":23,"tag":37,"props":12660,"children":12661},{},[12662],{"type":29,"value":12663},"This option is used only when the key must be generated on the client or server for reasons like compliance, using an HSM or dedicated device, or migrating an existing key.",{"type":23,"tag":4920,"props":12665,"children":12666},{},[12667,12672,12691],{"type":23,"tag":64,"props":12668,"children":12669},{},[12670],{"type":29,"value":12671},"Generate a private key and CSR locally.",{"type":23,"tag":64,"props":12673,"children":12674},{},[12675,12676,12681,12683,12689],{"type":29,"value":9156},{"type":23,"tag":4453,"props":12677,"children":12678},{},[12679],{"type":29,"value":12680},"Provided by user",{"type":29,"value":12682}," and paste the complete CSR, including ",{"type":23,"tag":140,"props":12684,"children":12686},{"className":12685},[],[12687],{"type":29,"value":12688},"BEGIN\u002FEND CERTIFICATE REQUEST",{"type":29,"value":12690},", into the text box.",{"type":23,"tag":64,"props":12692,"children":12693},{},[12694],{"type":29,"value":12695},"Submit the CSR and download the certificate as prompted (the private key is not included).",{"type":23,"tag":4530,"props":12697,"children":12699},{"id":12698},"_104-approval-association-and-notification",[12700],{"type":29,"value":12701},"10.4 Approval Association and Notification",{"type":23,"tag":60,"props":12703,"children":12704},{},[12705,12717],{"type":23,"tag":64,"props":12706,"children":12707},{},[12708,12710,12715],{"type":29,"value":12709},"If a profile is bound to an ",{"type":23,"tag":4453,"props":12711,"children":12712},{},[12713],{"type":29,"value":12714},"Approval Profile",{"type":29,"value":12716},", the profile will be pending approval upon submission. After the profile is approved, the profile will be automatically issued or available for download.",{"type":23,"tag":64,"props":12718,"children":12719},{},[12720],{"type":29,"value":12721},"The email subject and body comply with the notification requirements in Section 8.",{"type":23,"tag":4530,"props":12723,"children":12725},{"id":12724},"_105-faqs",[12726],{"type":29,"value":12727},"10.5 FAQs",{"type":23,"tag":60,"props":12729,"children":12730},{},[12731,12741,12751,12766],{"type":23,"tag":64,"props":12732,"children":12733},{},[12734,12739],{"type":23,"tag":4453,"props":12735,"children":12736},{},[12737],{"type":29,"value":12738},"Field failure",{"type":29,"value":12740},": The DN\u002FSAN is inconsistent with that in the profile. Adjust the DN\u002FSAN according to Section 9.",{"type":23,"tag":64,"props":12742,"children":12743},{},[12744,12749],{"type":23,"tag":4453,"props":12745,"children":12746},{},[12747],{"type":29,"value":12748},"Unable to download P12",{"type":29,"value":12750},": Download is blocked by the browser, or password policies conflict. Use another browser or check the password length and character set.",{"type":23,"tag":64,"props":12752,"children":12753},{},[12754,12759,12761,12765],{"type":23,"tag":4453,"props":12755,"children":12756},{},[12757],{"type":29,"value":12758},"CSR rejected",{"type":29,"value":12760},": The Subject\u002FSAN in the CSR conflicts with that in the profile. Rebuild the CSR using the profile or use ",{"type":23,"tag":4453,"props":12762,"children":12763},{},[12764],{"type":29,"value":12529},{"type":29,"value":52},{"type":23,"tag":64,"props":12767,"children":12768},{},[12769,12774],{"type":23,"tag":4453,"props":12770,"children":12771},{},[12772],{"type":29,"value":12773},"Approval suspended",{"type":29,"value":12775},": The number of approvers does not meet the requirement, or the approver does not have the required permission. Check the status under Monitor > Approvals.",{"type":23,"tag":4173,"props":12777,"children":12778},{},[12779],{"type":29,"value":4177},{"title":9,"searchDepth":392,"depth":392,"links":12781},[12782,12783,12784,12785,12798,12827,12835,12849,12857,12868],{"id":4441,"depth":364,"text":4444},{"id":4466,"depth":364,"text":4469},{"id":4498,"depth":364,"text":4501},{"id":4520,"depth":364,"text":4523,"children":12786},[12787,12792,12793,12794,12795,12796,12797],{"id":4532,"depth":379,"text":4535,"children":12788},[12789,12790,12791],{"id":4552,"depth":392,"text":4555},{"id":4660,"depth":392,"text":4663},{"id":4755,"depth":392,"text":4758},{"id":4850,"depth":379,"text":4853},{"id":4915,"depth":379,"text":4918},{"id":5488,"depth":379,"text":5491},{"id":5526,"depth":379,"text":5529},{"id":5537,"depth":379,"text":5540},{"id":5961,"depth":379,"text":5964},{"id":6042,"depth":364,"text":6045,"children":12799},[12800,12801,12805,12806,12807,12808,12818],{"id":6048,"depth":379,"text":6051},{"id":6073,"depth":379,"text":6076,"children":12802},[12803,12804],{"id":6079,"depth":392,"text":6082},{"id":6112,"depth":392,"text":6115},{"id":6156,"depth":379,"text":6159},{"id":6275,"depth":379,"text":6278},{"id":6351,"depth":379,"text":6354},{"id":6477,"depth":379,"text":6480,"children":12809},[12810,12811,12812,12813,12814,12815,12816,12817],{"id":6483,"depth":392,"text":6486},{"id":6680,"depth":392,"text":6683},{"id":6835,"depth":392,"text":6838},{"id":7100,"depth":392,"text":7103},{"id":7407,"depth":392,"text":7410},{"id":7531,"depth":392,"text":7534},{"id":7650,"depth":392,"text":7653},{"id":7717,"depth":392,"text":7720},{"id":8014,"depth":379,"text":8017,"children":12819},[12820,12821,12822,12823,12824,12825,12826],{"id":8020,"depth":392,"text":6486},{"id":8165,"depth":392,"text":6683},{"id":8274,"depth":392,"text":6838},{"id":8476,"depth":392,"text":7103},{"id":8696,"depth":392,"text":8699},{"id":8789,"depth":392,"text":8792},{"id":8894,"depth":392,"text":8897},{"id":8982,"depth":364,"text":8985,"children":12828},[12829,12830,12831,12832,12833,12834],{"id":8988,"depth":379,"text":8991},{"id":9184,"depth":379,"text":9187},{"id":9405,"depth":379,"text":9408},{"id":9485,"depth":379,"text":9488},{"id":9653,"depth":379,"text":9656},{"id":9682,"depth":379,"text":9685},{"id":9715,"depth":364,"text":9718,"children":12836},[12837,12838,12839,12840,12841,12842,12843,12844,12845,12846,12847,12848],{"id":9729,"depth":379,"text":9732},{"id":9934,"depth":379,"text":9937},{"id":10157,"depth":379,"text":10160},{"id":10244,"depth":379,"text":10247},{"id":10401,"depth":379,"text":10404},{"id":10856,"depth":379,"text":10859},{"id":10940,"depth":379,"text":10943},{"id":11025,"depth":379,"text":11028},{"id":11080,"depth":379,"text":11083},{"id":11135,"depth":379,"text":11138},{"id":11205,"depth":379,"text":11208},{"id":11297,"depth":379,"text":11300},{"id":11394,"depth":364,"text":11397,"children":12850},[12851,12852,12853,12854,12855,12856],{"id":11400,"depth":379,"text":11403},{"id":11446,"depth":379,"text":11449},{"id":11538,"depth":379,"text":11541},{"id":11666,"depth":379,"text":11669},{"id":11759,"depth":379,"text":11762},{"id":11783,"depth":379,"text":11786},{"id":11812,"depth":364,"text":11815,"children":12858},[12859,12860,12861,12862,12864,12865,12866,12867],{"id":11830,"depth":379,"text":11833},{"id":11854,"depth":379,"text":11857},{"id":11978,"depth":379,"text":11981},{"id":12087,"depth":379,"text":12863},"9.4 Other Subject Attributes—(Setting by Users)",{"id":12172,"depth":379,"text":12175},{"id":12251,"depth":379,"text":12254},{"id":12300,"depth":379,"text":12303},{"id":12437,"depth":379,"text":12440},{"id":12503,"depth":364,"text":12506,"children":12869},[12870,12871,12872,12873,12874],{"id":12534,"depth":379,"text":12537},{"id":12567,"depth":379,"text":12570},{"id":12652,"depth":379,"text":12655},{"id":12698,"depth":379,"text":12701},{"id":12724,"depth":379,"text":12727},"content:en:blogs:pki-cert-service-guide.md","en\u002Fblogs\u002Fpki-cert-service-guide.md","en\u002Fblogs\u002Fpki-cert-service-guide","PKI Practice: Building a Complete Certificate Service System (openubmc.cn) 1. Introduction This tutorial provides a hands-on guide based on EJBCA, designed to compliance the CA\u002FRA workflow in a demo environment. It walks through key operational steps including certificate profile creation, end entity profile configuration, approval process activation, and RA certificate issuance and download. This tutorial focuses on practical execution, making it ideal for experiments, proof-of-concept (PoC) setups, or internal demonstrations. Please note that this tutorial does not cover production-level security hardening or compliance requirements. Objective : Master the core operations of EJBCA and complete the entire process from template configuration to certificate issuance.  2. Terms RA : registers end entities and reviews their identities. Certificate profile : presets key usages, SANs, and validity periods.  3. Experiment Environment and Prerequisites OS: Ubuntu 20.04 Server (installed offline) Software to be preset: Docker and docker-compose (apt package)  4. EJBCA Docker Deployment and Persistence This chapter explains how to deploy the EJBCA certificate service using Docker, with a focus on ensuring persistent data storage on a dedicated drive. This setup helps prevent data loss in the event of container or virtual machine restarts. Key topics cover configuring data persistence of the internal database (H2 by default), running containers using docke-compose, and setting up remote access through appropriate configuration parameters. 4.1 Environment Setup and Proxy Configuration Some EJBCA Docker images (such as  keyfactor\u002Fejbca-ce ) need to be pulled from the public network. To ensure environment availability, configure the HTTP\u002FHTTPS proxy of Docker Daemon. Step 1 Configure the systemd proxy. Docker Daemon runs under the systemd management. You need to add the following configurations to inherit the system proxy. sudo  mkdir  -p  \u002Fetc\u002Fsystemd\u002Fsystem\u002Fdocker.service.d\n sudo  nano  \u002Fetc\u002Fsystemd\u002Fsystem\u002Fdocker.service.d\u002Fhttp-proxy.conf\n Content: [Service]\n Environment=\"HTTP_PROXY=http:\u002F\u002F192.168.xxx.xxx:7890\"\n Environment=\"HTTPS_PROXY=http:\u002F\u002F192.168.xxx.xxx:7890\"\n Environment=\"NO_PROXY=127.0.0.1,localhost,192.168.13.119\" \u002F\u002F Change the IP address to the host IP address of your virtual machine.\n Step 2 Reload and restart Docker. sudo  systemctl  daemon-reload\n sudo  systemctl  restart  docker\n sudo  systemctl  status  docker  --no-pager  -l\n If the output contains  Active: active (running) , the proxy configuration takes effect. Step 3 Check whether the proxy has taken effect. docker  info  |  grep  -i  proxy\n If the following information is displayed, the proxy has taken effect: HTTP  Proxy:  http:\u002F\u002F192.168.xxx.xxx:7890\n HTTPS  Proxy:  http:\u002F\u002F192.168.xxx.xxx:7890\n 4.2 Data Persistence Configuration Save the H2 database in files, and set the database as follows:  jdbc:h2:\u002Fmnt\u002Fpersistent\u002Fejbcadb;DB_CLOSE_DELAY=-1 . Host mount path:  \u002Fopt\u002Fejbca-data:\u002Fmnt\u002Fpersistent Do not use  --rm  to start the container. Set the host permission:  chown -R 10001:10001 \u002Fopt\u002Fejbca-data 📌 Note: In a formal environment, it is recommended to use external database, such as PostgreSQL or MySQL, to improve system reliability and disaster recovery capabilities. Deployment Using Docker Compose Create a directory structure. mkdir  -p  \u002Fopt\u002Fejbca-compose\n cd  \u002Fopt\u002Fejbca-compose\n mkdir  -p  \u002Fopt\u002Fejbca-data\n chown  -R  10001:10001  \u002Fopt\u002Fejbca-data\n Create and compile  docker-compose.yml  in the current directory. version :  \"3.3\"  # Use Docker Compose v3.3.\n \n services :\n   ejbca :  # Define the service ejbca.\n     image :  keyfactor\u002Fejbca-ce:latest  # Use the latest EJBCA image (community-edition) provided by Keyfactor.\n     container_name :  ejbca  # Set the container name to ejbca.\n     hostname :  myejbca.test.local  # Set the internal host name of the container, which affects fields such as CN in the certificate.\n \n     environment :  # Set environment variables to configure the EJBCA startup behavior.\n       -  DATABASE_JDBC_URL=jdbc:h2:\u002Fmnt\u002Fpersistent\u002Fejbcadb;DB_CLOSE_DELAY=-1  # Use the embedded H2 database. The data is stored in the mount directory.\n       -  TLS_SETUP_ENABLED=true  # Enable automatic TLS settings (for HTTPS access).\n       -  SMTP_DESTINATION=192.168.xx.xx  # Set the SMTP email server address (for sending notification emails).\n       -  SMTP_DESTINATION_PORT=25  # Set SMTP service port. The default value is 25. (Encryption is disabled.)\n       -  SMTP_FROM=ejbca@example.local  # Set the email sender address.\n       -  SMTP_TLS_ENABLED=false  # Do not enable STARTTLS for SMTP.\n       -  SMTP_SSL_ENABLED=false  # Do not enable SSL\u002FTLS encryption for SMTP.\n \n     ports :  # Map the container port to the host.\n       -  \"80:8080\"  # Map the host port 80 to the container port 8080 (HTTP).\n       -  \"443:8443\"  # Map the host port 443 to the container port 8443 (HTTPS).\n \n     volumes :  # Mount the data volume to map the directory in the container to the host for data persistence.\n       -  \u002Fopt\u002Fejbca-data:\u002Fmnt\u002Fpersistent  # Mount the \u002Fopt\u002Fejbca-data directory on the host to the container to persist data such as the database.\n \n     restart :  unless-stopped  # If the container exits abnormally, the container is automatically restarted unless you manually stop the container.\n Start the container service.： docker-compose  up  -d\n docker-compose  logs  -f\n ⚙️ You can use Compose to easily manage configuration versions, facilitating team collaboration and version recovery. 4.4 Remote Access Configuration Set the container's hostname in advance, which affects CN of the TLS certificate. hostname :  myejbca.test.local\n 4.5 Certificate Trust Management After downloading the super administrator certificate ·, double-click to import it. 4.6 Login Process Summary Run  docker-compose logs -f  to search for SuperAdmin URL and one-time password in the container logs. ejbca     |  2025-08-05  09:11:31,656+0000  INFO   [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] ( process:1 )  *                                                                                                     *\n ejbca     |  2025-08-05  09:11:31,656+0000  INFO   [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] ( process:1 )  *    URL:      https:\u002F\u002Fmyejbca.test.local:443\u002Fejbca\u002Fra\u002Fenrollwithusername.xhtml ? username = superadmin  *\n ejbca     |  2025-08-05  09:11:31,656+0000  INFO   [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] ( process:1 )  *    Password: urAMy0He5c\u002FhHy+DYyDFNy4E                                                                *\n ejbca     |  2025-08-05  09:11:31,656+0000  INFO   [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] ( process:1 )  *                                                                                                     *\n ejbca     |  2025-08-05  09:11:31,656+0000  INFO   [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] ( process:1 )  *  Once the P12 is downloaded, use  \"urAMy0He5c\u002FhHy+DYyDFNy4E\"  to import it.                            *\n ejbca     |  2025-08-05  09:11:31,656+0000  INFO   [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] ( process:1 )  *                                                                                                     *\n ejbca     |  2025-08-05  09:11:31,656+0000  INFO   [\u002Fopt\u002Fkeyfactor\u002Fbin\u002Fstart.sh] ( process:1 )  ******************************************************************************************************\n Access the URL, enter the password, set the export password, and download the  .p12  certificate. Import the certificate and access  https:\u002F\u002Fmyejbca.test.local\u002Fejbca\u002Fadminweb . If the system displays a message indicating that the client certificate is not provided, check whether the certificate is successfully imported, the proxy is disabled, and the domain name is correctly resolved. ✅ So far, the EJBCA deployment, persistence, and management login process is completed. Important Notes (Must Be Followed) ✅  You must  add  myejbca.test.local  to the hosts file or set up a local DNS server. Otherwise, the browser may fail to resolve the domain name.  \n✅ The default algorithm for the super administrator certificate is DILITHIUM2, which may vary by version. However, Windows probably cannot recognize DILITHIUM2. To ensure compatibility, it is advised to switch the algorithm to RSA 4096.  \n✅  No proxy should be enabled . Otherwise, EJBCA may fail to correctly process client certificate authentication.  \n✅  Ensure that the Windows\u002FmacOS\u002FLinux certificate is correctly imported  to avoid the \" No client certificate was presented \" error.  \n✅  It is recommended that you use the Chrome browser in Incognito mode for the first time  to avoid the \" No client certificate was presented \" error caused by cache problems.  5. Initial CA Creation and Certificate Level Setup 5.1 Managing Certificate Profiles Log in to the EJBCA management console. Choose  CA Functions > Certificate Profiles . 5.2 Creating a Certificate Profile Method 1: Cloning an Existing Profile Find an appropriate profile (for example,  ENDUSER ) in the list. Click  Clone , enter the new name, and save the profile. Method 2: Manually Creating a Profile Click  Add  and enter the name. The editing page is displayed. Set necessary information as required, including  Key Usage ,  Extended Key Usage , validity period, and Subject DN. Save the settings and return to the list for check. 5.3 Creating a Crypto Token Choose  CA Functions → Crypto Tokens 。 Click  Create new  and enter the following information: Name ：Enter the name of your crypto token. Type ：Select  SOFT 。 Auto-activation(Optional) ：If selected, the crypto token can be automatically activated. Allow export of private keys ：Select  Allow  if you want to export the private key. Authentication Code ：Enter the authentication code and confirm it.  dd if=\u002Fdev\u002Frandom bs=1 count=128 2>&1| sha256sum | awk '{print $1} Save the settings and ensure that the status is  Active  in the list。 5.4 Generating a Key Pair Access the x Crypto Token  details page. Enter the key name, for example,  signKey , in  Crypto Token currently does not contain any key pairs . Select a key algorithm, for example,  RSA 4096 . Click  Generate new key pair . Note : The default profile cannot be modified. You need to clone it before creating a new one. 5.5 Creating a CA Choose  CA Functions → Certification Authorities 。 The default  ManagementCA (Active)  is displayed in the list on the top.  You do not need to select it 。 Scroll to the  Add CA  area at the bottom of the page.\n Enter the new CA name, for example,  DemoCA , in the text box. Click  Create…  on the right. The CA configuration wizard is displayed. Enter necessary fields on the  Create CA  page. Click  Create  at the bottom to save the CA. If the configuration is correct, the CA list is displayed and the  DemoSubCA (Active)  status is displayed. (Optional) If you want to manually upload the certificate issued by the root CA, select the new CA in the list and select  Import CA certificate…  to upload the chain file. The intermediate CA is created. You can use it to issue end-entity certificates. 5.6 (Example) Creating a Root CA 1️⃣ CA type and key configuration Parameter Description CA Type ✅  X.509 CA ; Standard X.509 CA Crypto Token ✅ Select the created  Crypto Token , for example,  demoCrypto . Signing Algorithm ✅  SHA256WithRSA ; Secure signature algorithm Alternative Signing Algorithm ❌  None ; No backup signature algorithm is required. Key Sequence Format ✅  Numeric (0-9) ; Serial number of the CA certificate Key Sequence ✅  00000  ; Initial serial number, which can be changed. Description ✅ Root CA description, including the purpose and management unit.  2️⃣ Certificate policies (Directives) Parameter Description Enforce unique public keys ✅ Enforces the public key to be unique. Enforce key renewal ❌ Not required for the root CA. Enforce unique DN ✅ Ensures  DN  uniqueness (applicable to small-scale CAs). Enforce unique Subject DN SerialNumber ❌ Applicable only to large-scale CAs (not required for CAs with fewer than 20 certificates). Use Certificate Request History ❌ Records certificate request history (not required for the root CA). Use User Storage ✅ Stores user information. Use Certificate Storage ✅ Stores issued certificates.  3️⃣ CA certificate data Parameter Description Subject DN ✅  CN=test EnterpriseIT Root CA Signed By ✅  Self Signed ; Root CA must be self-signed. Certificate Profile ✅  ITROOTCA_profile ; Select the cloned root CA.   This parameter can be modified. Validity ✅  20y ; The certificate validity period is 20 years. Subject Alternative Name ❌ Not required for the root CA. Certificate Policy OID ❌ (Optional) By default, this parameter is left blank. Use UTF-8 in policy notice text ✅ Ensures international character support. PrintableString encoding in DN ❌ Do not select this parameter to avoid affecting internationalization. LDAP DN order ✅ Ensures that  DN  is sorted according to the LDAP specifications. Serial Number Octet Size ✅  20 ; 20-byte is recommended to ensure uniqueness. Name Constraints, Permitted ❌ Disabled for the root CA. Leave this parameter empty. Name Constraints, Excluded ❌ Disabled for the root CA. Leave this parameter empty.  4️⃣ CRL configuration Parameter Description Microsoft CA Compatibility Mode ❌ Disabled for the root CA. This parameter is applicable only to Windows AD CS. Authority Key ID ✅ Enabled and marked as  Critical . This parameter is used to identify the CRL issuer. It is recommended that it be enabled for the root CA and intermediate CA. CRL Number ✅ Enabled and marked as  Critical . This parameter is used to ensure that the CRL version is unique. It is recommended that it be enabled for the root CA and intermediate CA. Issuing Distribution Point on CRLs ❌ Disabled for the root CA. This parameter is applicable only to large-scale CAs with hierarchical CRL structures. CA issuer URI ❌ Left empty. Users provide this URI during final certificate download stage. Keep expired certificates on CRL ❌ Disabled for the root CA. Determine if this parameter should be enabled for the intermediate CA based on actual requirements. After this parameter is enabled, the certificate is still displayed in the CRL even if it expires. Use CRL partitions ❌ Not required for the root CA due to its low load. This parameter is applicable to CA that manages a large number of certificates. CRL Expire Period ✅  30d . Set the period to a longer one for the root CA and to a shorter one for the intermediate CA. CRL Issue Interval ✅  7d . Periodically updates the CRL. It is recommended that the active CA use  7d . CRL Overlap Time ✅  12h . The old CRL and new CRL overlap for 12 hours to prevent certificate verification failures. Delta CRL Period ❌  0m . Delta CRL is not used for the root CA. It is enabled only for CAs that require high real-time performance. Generate CRL Upon Revocation ❌ Disabled for the root CA, and enabled for the intermediate CA as required. A new CRL is generated immediately after a certificate is revoked. Allow changing revocation reason ✅ Enabled. This parameter allows to change the reason for certificate revocation. It is applicable to all CAs. Allow invalidity date ✅ Enabled. This parameter allows to set the certificate invalidity date. It is applicable to all CAs.  5️⃣ Approval settings Parameter Description Add\u002FEdit End Entity ❌ None . Root CA does not manage end entities. Key Recovery ❌ None . Root CA does not provide key recovery. Revocation ❌ None . Root CA rarely revokes its own certificates. CA Service Activation ❌ None . Root CA is manually activated.  6️⃣ Other data Parameter Description Validators ✅  Finish User . Enable the certificate verification policy. CMP RA Authentication Secret ❌ Leave this parameter empty. This parameter needs to be configured only when the CMP protocol is used. Monitor if CA active (healthcheck) ✅  Activate . Enable CA running monitoring, which applies to all CAs. Request Processor ❌  None . Root CA usually does not need to process external requests.  7️⃣ Creation\u002FRenewal of Externally Signed CAs Parameter Description Renew CA ❌ Creates a new root CA instead of regenerating the key and re-signing the existing CA. This avoids problems caused by root CA certificates with the same name. CA Chain Certificates ✅ Uploads the certificate chain file (in PEM\u002FDER format) only when the CA is signed externally. If the root CA has been installed locally, you do not need to upload the file.  8️⃣ CA Creation After confirming all parameters are correct, click  Create  to generate a CA. 1. Download and verify the root CA certificate. Run the following OpenSSL commands to verify the certificate format and validity: # Verify PEM certificates.\n openssl  x509  -in  rootca.pem  -text  -noout\n \n # Verify DER certificates.\n openssl  x509  -in  rootca.der  -inform  DER  -text  -noout\n \n # Check the certificate's SHA256 fingerprint information.\n openssl  x509  -noout  -fingerprint  -sha256  -in  rootca.pem\n \n # Verify the self-signed certificate validity.\n openssl  verify  -CAfile  rootca.pem  rootca.pem\n 2. Deploy and verify the CRL. If the CRL URL is configured, run the following command: # Verify the CRL file.\n openssl  crl  -in  rootca.crl  -text  -noout\n Ensure that the CRL can be accessed through the web. 🚀  The root CA has been created and can be used to issue intermediate CAs!  🎉 5.7 Creating an Intermediate CA Certificate 1️⃣ CA type and key configuration Parameter Description CA Type ✅  X.509 CA ; Standard X.509 CA Crypto Token ✅ Select the created Crypto Token, for example,  demoCrypto . Signing Algorithm ✅  SHA256WithRSA ; Secure signature algorithm Alternative Signing Algorithm ❌  None ; No backup signature algorithm is required. Key Sequence Format ✅  Numeric (0-9) ; Serial number of the CA certificate Key Sequence ✅  00001 ; Initial serial number, which should be different from that of the root CA. Description ✅ Intermediate CA description, including the purpose and management unit.  2️⃣ Certificate policies (Directives) Parameter Description Enforce unique public keys ✅ Enforces the public key to be unique. Enforce key renewal ✅ Recommended to be enabled for intermediate CAs to ensure security. Enforce unique DN ✅ Ensures the DN to be unique. Enforce unique Subject DN SerialNumber ❌ Not required when the number of certificates is fewer than 20. Use Certificate Request History ✅ Records certificate request history. Use User Storage ✅ Stores user information. Use Certificate Storage ✅ Stores issued certificates.  3️⃣ CA certificate data Parameter Description\u002FExample Value Subject DN ✅  CN=test Intermediate CA   Signed By ✅  test EnterpriseIT Root CA  The intermediate CA must be signed by the root CA. Certificate Profile ✅  INTERMEDIATE_CA_profile  Configured for the intermediate CA after cloning. Validity ✅  10y  Generally, the validity period is 10 years, which is shorter than that of the root CA. Subject Alternative Name ❌ Not required for the intermediate CA. Certificate Policy OID ❌ Leave this parameter empty by default or enter a value as required. Use UTF-8 in policy notice text ✅ Ensures international character support. PrintableString encoding in DN ❌ Do not select this parameter to avoid affecting internationalization. LDAP DN order ✅ Arranges the DN according to LDAP specifications. Serial Number Octet Size ✅  20  20-byte is recommended. Name Constraints, Permitted ❌ Disabled by default. Leave this parameter empty. Name Constraints, Excluded ❌ Disabled by default. Leave this parameter empty.  4️⃣ CRL configuration Parameter Description Microsoft CA Compatibility Mode ❌ Disabled, typically. This parameter is used only in the Windows AD environment. Authority Key ID ✅ Enabled and marked as Critical. CRL Number ✅ Enabled and marked as Critical. Issuing Distribution Point on CRLs ❌ Disabled, typically. CA issuer URI ❌ Leave this parameter empty or enter a download address as required. Keep expired certificates on CRL ❌ Recommended to be enabled for the intermediate CA and retain expired certificates. This parameter is disabled currently; otherwise, the CRL size will become large. Use CRL partitions ❌ Not required, typically. CRL Expire Period ✅  7d  7-day is recommended to ensure timely update. CRL Issue Interval ✅  1d  The CRL is issued every day to ensure timely update. CRL Overlap Time ✅  12h  The new CRL overlaps with the old CRL for 12 hours to ensure smooth transition. Delta CRL Period ❌  0m  Delta CRL is not used. Generate CRL Upon Revocation ✅ Enabled. The CRL is updated immediately after the certificate is revoked. Allow changing revocation reason ✅ This parameter allows to change the reason for certificate revocation. Allow invalidity date ✅ This parameter allows to set the certificate invalidity date.  5️⃣ Default CA defined validation data Parameter Description Default CRL Distribution Point ❌ Leave this parameter empty or enter a value as required to distribute CRLs. Default CRL Issuer ❌ Leave this parameter empty. Typically, this parameter does not need to be set. Default Freshest CRL Distribution Point ❌ Leave this parameter empty. Typically, this parameter does not need to be set. OCSP Service Default URI ❌ Leave this parameter empty or enter an OCSP address as required. CA Issuer Default URI ❌ Leave this parameter empty or provide a URI later.  6️⃣ Approval settings and other data Currently, only  None  is available for approval settings, indicating that no additional approval process is required. If it is required, check the global approval policy Supervision Functions of EJBCA. Parameter Description Validators ✅  Finish User . Enable the certificate verification policy. CMP RA Authentication Secret ❌ Leave this parameter empty. This parameter needs to be configured only when the CMP protocol is used. Monitor if CA active (healthcheck) ✅  Activate . Enable running monitoring. Request Processor ❌  None . Generally, external request processing is not required.  7️⃣ Intermediate CA creation After confirming all parameters are correct, click  Create  to generate a CSR. Submit the CSR to the root CA for signature, download the signed certificate, and verify it. openssl  x509  -in  intermediate_ca.pem  -text  -noout\n openssl  verify  -CAfile  rootca.pem  intermediate_ca.pem\n 🚀 The intermediate CA has been created and can be used to issue end entity certificates! 🎉  6. RA Common User Creation and Permission Configuration 6.1 Creating an RA Role Access the RA Web page  and choose Role Management > Roles > Create New Role. Role Management →Roles →Create New Role\n Enter role information. ： Field Recommended Value Namespace No namespace Role name test RA Users Set the permissions for Certificate Authorities. ： Select a CA, for example,  Intermediate CA  or Root CA, from the Available list and click  Add . Set the permissions for End Entity. (Recommended): ✅ Create end entities ✅ Create certificates ✅ ...by using username and password ✅ ...by using a request ID ✅ View end entities and certificates Set the permissions for End Entity Profiles. ： Select  EMPTY  from the Available list and click  Add . Click  Add  to save the created role. 6.2 Creating an RA Commer User (End Entity) Access the  EJBCA Admin Web  page and choose  RA Functions > Add End Entity . Enter the user details. Field Recommended Value End Entity Profile EMPTY Username test_signuser Password 123 Confirm Password 123 Batch generation Not selected E-mail cert-user@example.com CN test RA user S1 O test C CN Certificate Profile ENDUSER CA test Intermediate CA Token P12 file Click  Add . End Entity is created. 6.3 Downloading the User Certificate Access the  RA Web  page and choose  Enroll > Use Username . Use the created username and password to log in. Username:  test_signuser Password:  123 Select a key algorithm after logging in. Select the  RSA 4096  algorithm, and generate and download the  .p12  user certificate. 6.4 Adding a User to the RA Role Access the  RA Web  page and choose  Search > End Entities . Copy the CN of the certificate created earlier. Access the  RA Web  page and choose  Role Management > Roles > Members > Add Role Member . Enter the information about the role member. Field Recommended Value Role test RA Users Token Type Certificate CA test Intermediate CA Match with CN Common Name Match Value Paste the copied certificate CN. Description RA common user Click  Add  to add the role member. Restart the EJBCA service  for the permission to take effect (recommended). docker restart ejbca 6.5 Logging In to the RA WebUI Non-administrator  roles import the downloaded · certificate to the browser. Access the RA Web page for automatic authentication and login. Perform authorized RA operations, such as creating and viewing certificates. 6.6 Important Notes (Must Be Followed) ✅ You are advised to use the Chrome browser in incognito mode for the first login to quickly start the verification and avoid the error \"No OAuth providers configured. Please log in using a valid certificate\" caused by cache problems. ✅  Use HTTPS  to access, for example,  https:\u002F\u002F192.168.xxx.xxx\u002Fejbca\u002Fra\u002F , to avoid the error \"No OAuth providers configured. Please log in using a valid certificate.\"  7. Certificate Profile Settings This section describes the meanings and recommended usage of the Certificate Profile configuration items in the EJBCA. It is applicable to certificate issuance requirements for common devices such as HTTPS, web, device, and client.  7.1 Basic Information Configuration Item Description Certificate Profile ID Unique identifier of the profile in the database, which is used only for internal identification. Type Available end entity, subordinate CA, and root CA. Available Key Algorithms Available key algorithms, such as RSA, ECDSA, Ed25519, and DILITHIUM. Available ECDSA curves Available ECDSA curves. No curve is enabled currently. Available bit length Key size supported (for RSA), such as 2048 and 4096. Signature algorithm Signature hash algorithm used for certificate issuance, for example, SHA3-256withRSA. Alternative Signature Whether to enable the alternative signature algorithm, such as ECDSA and EdDSA. End date or end date of the certificate Default validity period. For example, \"2y\" indicates two years. Validity Offset Offset of the issue date. The start time can be set forward or backward. Expiration Restrictions Maximum expiration time, which is used for compliance control. Profile Description Certificate profile description, which is used to note the purpose (for example, \"terminal device certificate\").  7.2 Permissions Control Configuration Item Description Recommended Setting Allow Validity Override Allow the default validity period to be overwritten when a certificate is issued. ✅ which is used when the validity period needs to be manually adjusted. Allow Expired Validity End Date Allow the end time to be set to an expired time (for test or audit). ✅ (for debugging) Allow Extension Override Allow the extension fields in the CSR to overwrite the predefined extension fields in the profile. ❌ Enabling this function can harm profile uniformity and create potential risks. Allow certificate serial number override Allow the certificate serial number to be customized during issuance. ❌ Enable this function only under specific circumstances (for example, for certificate cloning and replacement). Allow Subject DN Override by CSR Allow the subject information (such as CN\u002FO) in the CSR to overwrite the profile configuration. ✅ which is applicable to the automatic issuance process. Allow Subject DN Override by End Entity Information Allow the subject field to be specified based on the end entity information (user input). (Recommended) ✅, which provides high flexibility. Allow Key Usage Override Allow the keyUsage field in the CSR to overwrite the profile configuration. ❌ Enabling this function creates inconsistencies that compromise security. Allow Backdated Revocation Allow the revocation time to be set to a historical time for retrospective revocation. ✅ which is required in some audit\u002Fcompliance scenarios. Use Certificate Storage Enable the certificate to be stored in the database. This item must be enabled unless it is used for special offline purposes. ✅ Store Certificate Data Store the complete original certificate data (used with OCSP\u002FCRL). ✅ It is recommended that this function be enabled together with the storage function. ✅ Suggestion:  Keep profiles consistent in the production environment. Disable override permissions unless needed to stop CSR or End Entities from making unauthorized changes.  7.3 X.509v3 Extension—Basic Information Extension Item Description Recommended Setting Basic constraints Must be a CA certificate (the value must be FALSE for end entity certificates) ✅ Enabled; key setting CA key identifier Information about the CA that issues the certificate. ✅ Enabled Subject key identifier Unique ID of the certificate. ✅ Enabled  7.4 X.509v3 Extension—Key Usage Item Description digitalSignature Used for signature verification, such as identity authentication and code signature. nonRepudiation Indicates that the signature is non-repudiable (legal scenario). dataEncipherment Used to encrypt non-key data. keyEncipherment Used to encrypt key materials, such as symmetric keys. keyAgreement Key negotiation protocol (such as DH) cRLSign Used by the CA to sign CRLs. keyCertSign Used by the CA to sign certificates. encipherOnly Used with keyAgreement (only for encryption). decipherOnly Used with keyAgreement (only for decryption). Forbid encryption usage for ECC keys Forbids encryption usage for ECC keys. 7.5 X.509v3 Extension—Extended Key Usage Extended Key Usage Description TLS client TLS authentication on the client TLS server TLS authentication on the server EAP over LAN (EAPOL) Enterprise identity authentication EAP over PPP Point-to-Point Protocol (PPP) identity authentication ETSI TSL Signing ETSI TSL signing ICAO Deviation List Signing ICAO signing ICAO Master List Signing ICAO primary list signing Intel AMT management Dedicated to Intel management certification Internet Key Exchange for IPsec IPsec key exchange Kerberos Client Authentication Kerberos client authentication Kerberos KDC Kerberos key center MS CA Key Exchange Microsoft CA key exchange MS Commercial Code Signing Microsoft commercial code signing MS Document Signing Microsoft document signing MS EFS Recovery Microsoft EFS recovery MS Encrypted File System Microsoft encrypted file system MS Individual Code Signing Microsoft individual code signing MS Smart Card Sign-in Microsoft smart card login authentication OCSP Issuer Online Certificate Status Protocol (OCSP) signing certificate PDF Signing PDF signing PIV Card Authentication PIV card authentication RFC9336 Document Signing RFC9336-compliant document signing SCVP Client Simplified Certificate Verification Protocol (SCVP) client SCVP Server SCVP server SIP Domain VoIP\u002FSIP domain name authentication SSH Client SSH client authentication SSH Server SSH server authentication codeSigning Software\u002FDriver signing Any EKU Common EKU support emailProtection S\u002FMIME email signing\u002Fencryption clientAuth TLS client authentication timeStamping Timestamp signing serverAuth Server identity authentication (HTTPS, etc.) 7.6 Name Extension Item Description Suggestion Subject Alt Name IP address, DNS, and Uemail can be used as certificate identifiers. ✅ Enabled Issuer Alternative Name Additional CA name.\tOptional Optional Name Constraints Constraints for subject namespaces. Optional (used in high-security scenarios) 7.7 Validation Data Item Description Suggestion CRL Distribution Point CRL URL ✅ Enabled; key setting Delta CRL（Freshest CRL） Incremental CRL Enable on demand Authority Information Access (AIA) OCSP\u002FCA information ✅  7.8 Private Key Validity Period Item Description Start Offset Start offset time of the private key Period Length Validity period of the private key (independent of the certificate validity period)  7.9 ETSI Compliant Extensions (Typically for High-compliance PKI Use Cases) Item Description Certifications Statement Identifies certificates used for legal or compliance purposes. Assured validity Ensures the validity of short-term certificates.  7.10 Other Extensions Extension Usage OCSP No Check Disables OCSP check (useful only for OCSP responders). Microsoft Profile Value\tSpecial extensions for Windows AD integration CA\u002FB Forum OID Identifier extension for CA\u002FB-compliant organization  7.11 Approval Settings and Additional Fields Configuration Item Description Add\u002FEdit End Entity Bound approval process Key Recovery Whether key recovery is supported (for example, for backup and restoration) Revocation Approval Whether approval is required for revocation CN Suffix A character string automatically added to the end of Subject CN Subject Subset Restriction Restriction on the Subject fields that can be used  7.12 CA & Release Settings Item Description Available CA CA that can use the certificate profile Publisher Publishing to LDAP, databases, or external services Single Certificate Limit Whether an end entity can have only one valid certificate Account Binding Namespace Device account binding (for example, IoT)  To configure the code signing certificate profile, adjust the keyUsage and extendedKeyUsage fields. 📌 You are advised to create different profiles for different applications (such as VPN, HTTPS, code signing, and client authentication) to facilitate management and compliance control.  8. Approval Configuration and Management 8.1 Creating an Approval Profile (Approval Configuration) Choose  Watchdog > Approval Profiles . Type a name (for example,  test ) at the bottom and click  Add . Click  Edit  in the list to enter the detailed settings. 8.2 Basic Parameter Settings Field Suggestion\u002FExample Approval Profile Type Accumulative Approval Partitioned Approval (can be used in cross-department cases) Request Expiration Period 8h (The request will be voided if not approved within the expiration period.) Approval Expiration Period 8h (Re-approval is required after the expiration period.) Max Extension Time 0d (The period cannot be extended.) Allow Self Approved Request Editing Deselected (Self-approval is prohibited in production.) 8.3 Approval Steps Set  Number of Required Approvals . Development\u002FTest:  1  (1-of-1). Production\u002FSensitive operations:  2  (2-of-2) or partitioned approval. Notification email: Notification message email recipient :  approval-admin-group@example.org supervisor@example.org Notification message email sender :  no-reply@192.168.xxx.xx Example theme profile:\n [AR-${approvalRequest.ID}-${approvalRequest.STEP_ID}-${approvalRequest.PARTITION_ID}] Approval Request\n Variables that can be referenced in the body:  ${approvalRequest.TYPE} ,  ${approvalRequest.REQUESTOR} , and  ${approvalRequest.WORKFLOWSTATE} . 8.4 Binding to a Specific Action End Entity Profile: Choose  CA Functions > End Entity Profiles >   > Approval Settings>  Add\u002FEdit End Entity to be approved > Approval Profile and then click  Save . Common options:  Add\u002FEdit End Entity  and  Key Recovery  (if enabled) Certificate Profile: Choose  CA Functions > Certificate Profiles >   > Approval Settings > Operation > Approval Profile  and then click  Save . Sensitive administrator actions : It is recommended that 2-of-2 or partitioned approval be used for intermediate CA change and revocation. 8.5 Testing and Verification Use a common RA account to start an operation (for example, creating an end entity) that requires approval on the RA WebUI. Choose Inspector Function > Approvals to check the approval queue, and use another approver account to complete the approval. Confirm that the operation was executed automatically and the email notification was received successfully. 8.6 FAQs No email received: Check the SMTP configuration, firewall, and recipient name, and view container logs. Stuck in pending status: Number of Required Approvals is set too high or the approver does not have the permission. Can be self-approved: Allow Self Approved Request Editing is selected by mistake. This function should be disabled in production. Expired: Request\u002FApproval Expiration is set too short. The value can be changed to 8h to 24h. 9. End Entity Profile Settings Path:  RA Functions > End Entity Profiles . The End Entity Profile defines the fields that can be populated, specifies which are mandatory or modifiable, and determines the default Certificate Profile, CA, and Token. 9.1 Creating and Opening an End Entity Profile Choose RA Functions > End Entity Profiles. Enter the profile name (for example, test) at the bottom and click Add Profile. Select the profile from the list and click Edit Endpoint Entity Profile. 9.2 Basic Information (Username\u002FPassword\u002FEmail) Generally, the  username\u002Fpassword  does not need to be specified in the profile. The profile only sets the rules and methods. The  username\u002Fpassword\u002Fenrollment code  can be specified  during end entity creation or application submission . Recommended practice Username: Select Auto-generated (for auto and batch operations), or manually specify the username when creating an end entity. Password (or Enrollment Code): Select Required to use the one-off Enrollment Code. Enter the specific value when creating an end entity or submitting the application on the RA. Minimum password strength\u002Flength: Retain the policy (for example, the length is greater than or equal to 8), but do not enter the specific password. Maximum number of failed login attempts: Set the number as needed. Select Modifiable if you need to temporarily change this limit. Batch generation: Disable this function. Avoid storing enrollment codes in plaintext. E-mail: Set it based on the Required\u002FModifiable setting. It is used for notification and identification. Impact of different application paths on username\u002Fpassword RA Web > Enroll > Use Username: Username and Password\u002FEnrollment Code are specified when an end entity is created. The user uses this account to log in to the system and obtain the certificate. RA Web > Enroll > Use Request ID: The system allocates Request ID. Password\u002FEnrollment Code is set when the request is created. The applicant uses the ID and code to obtain the certificate. User Generated (CSR): Token=User Generated. Retain Required to generate a one-off code. The applicant uses the CSR and code to complete the issuance. Directives Reverse Subject DN and Subject Alt Name Checks: You can also deselect this option. Allow merge DN for all interfaces: Generally, this option is not selected. It is selected only when DN combination is required for multiple APIs. Allow multi-value RDNs: This option is selected only when special requirements are met. (It is disabled by default, which is more secure.) 9.3 Subject DN Attributes—(Setting by Users) Available attributes are displayed on the left, and selected attributes are displayed on the right. Add the required fields to the right and set  Required\u002FModifiable\u002FValidation  for each field. Common recommendations (client\u002Fgeneral): Field Suggestion CN, Common name Required; Modifiable is determined by the RA. emailAddress, E-mail address in DN Optional. To bind with the email system, set it to Required. O, Organization \u002F OU, Org. Unit Service-dependent. You are advised to disable Modifiable to prevent arbitrary input. C, Country The value is fixed to CN or the country where the user is located. Generally, the value cannot be changed. If stricter verification is required, you can specify a regular expression or format rule in  Validation . 9.4  Other Subject Attributes —(Setting by Users) Subject Alternative Name (SAN) : Client certificate: RFC 822 Name (e-mail address) (same as the account email address) Server certificate: DNS Name and IP Address (added by domain name\u002FIP address) Device certificate: OtherName (written into the device ID\u002FOID) (Optional) ** Subject Directory Attributes: Attributes such as  Date of birth (YYYYMMDD)  are used only for archiving or compliance needs. You are advised not to enable multiple directory attributes. Addition method: Select an item in the  Other Subject Attributes  area and click  Add . You can also mark it as  Required\u002FModifiable  if supported by the interface. 9.5 Main Certificate Data Field Suggestion\u002FDescription Default Certificate Profile Select a certificate profile (for example, ENDUSER or SERVER). Available Certificate Profiles Select only the allowed profiles. Default CA \u002F Available CAs Specify the CAs that can issue the certificate. Note: Changing the available CAs impacts which roles can access the profile. Default Token \u002F Available Tokens P12 file (downloaded directly on the RA) or User Generated (CSR created by the user) 9.6 Other Certificate Data Custom certificate serial number : disabled by default Certificate Validity Start\u002FEnd Time : controlled by Certificate Profile by default. If a temporary certificate is required, enable this item and select Modifiable. Name Constraints (Permitted\u002FExcluded) : used for intermediate CAs. Generally, this item is disabled in end entity profiles. Custom certificate extension data \u002F ETSI PSD2 QC Statement \u002F CA\u002FB Forum Organization Identifier : Enable it as required for compliance. 9.7 Other Data\u002FRestrictions Field Suggestion Number of allowed requests 1  (preventing repeated issuance) Allow renewal before expiration Example:  30  days.  -1  indicates no limit. Revocation reason to set after certificate issuance Active  by default (typically left unchanged) Redact Subject Name from logs Enable this feature only for strict privacy or compliance needs. Send Notification Enable it when needed for SMTP settings. 9.8 Saving and Authorization Click  Save . Choose  RA Web > Role Management  and check that the related role has been authorized to use the end entity profile (visible\u002Fcreatable). Choose  Search > End Entities  and use the profile to create a test user to check the following:\n Check whether the DN\u002FSAN is added to the database according to the rules. Check whether the certificate uses the expected  Certificate Profile\u002FCA\u002FToken . Check whether the download or import is successful (P12\u002FPEM\u002FCSR process).  10. Applying for an End Entity Certificate as an RA Common User Choose  RA Web → Enroll 。 By default, you are advised to use  By the CA  (the CA generates the key) for stability and fewer errors; no CSR is needed. 10.1 Path and Prerequisites Profiles have been prepared in  End Entity Profiles  (Section 9) and  Certificate Profiles . Users have access permission. When approval is enabled (see Section 8), submissions go into the pending queue. Certificates are issued once they are approved. 10.2 Recommended: By the CA (No CSR Required) Choose  Enroll > Make New Request . Select  Certificate Type  (End Entity Profile) and  Certificate subtype  (Certificate Profile). Set  Keypair generation  to  By the CA . Expand  Provide request info  and enter  Subject DN \u002F SAN  (such as CN, email address, DNS, and IP address) as required. Download the  *.p12  file. 10.3 Optional: Provided by user (Uploading a CSR) This option is used only when the key must be generated on the client or server for reasons like compliance, using an HSM or dedicated device, or migrating an existing key. Generate a private key and CSR locally. Select  Provided by user  and paste the complete CSR, including  BEGIN\u002FEND CERTIFICATE REQUEST , into the text box. Submit the CSR and download the certificate as prompted (the private key is not included). 10.4 Approval Association and Notification If a profile is bound to an  Approval Profile , the profile will be pending approval upon submission. After the profile is approved, the profile will be automatically issued or available for download. The email subject and body comply with the notification requirements in Section 8. 10.5 FAQs Field failure : The DN\u002FSAN is inconsistent with that in the profile. Adjust the DN\u002FSAN according to Section 9. Unable to download P12 : Download is blocked by the browser, or password policies conflict. Use another browser or check the password length and character set. CSR rejected : The Subject\u002FSAN in the CSR conflicts with that in the profile. Rebuild the CSR using the profile or use  By the CA . Approval suspended : The number of approvers does not meet the requirement, or the approver does not have the required permission. Check the status under Monitor > Approvals. html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",[4430],{"_path":12881,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":12882,"description":12883,"date":12884,"category":12885,"author":12886,"body":12890,"_type":4181,"_id":13253,"_source":4183,"_file":13254,"_stem":13255,"_extension":4186,"coverImage":12970,"plainText":13256,"authorNames":13257},"\u002Fen\u002Fblogs\u002F202508071","openUBMC Observability: Full Insight into the System for a New BMC Vision","As digital transformation surges forward, system complexities escalate continuously. The efficient monitoring and management of distributed systems have become a key challenge. As a bridge between hardware and software, the baseboard management controller (BMC) is responsible for device management, monitoring, and maintenance. openUBMC 25.06 introduces the Observability component to provide complete observability capabilities based on openTelemetry, enabling developers to clearly understand system status, quickly locate issues, and optimize system performance.","2025\u002F08\u002F07","essentials",[12887],{"name":12888,"description":12889},"许强","openUBMC Interface SIG maintainer, focusing on enhancing interface management efficiency and optimizing BMC firmware locating.",{"type":20,"children":12891,"toc":13239},[12892,12897,12901,12906,12912,12918,12923,12965,12972,12978,12983,13006,13013,13019,13024,13031,13037,13042,13048,13053,13058,13118,13124,13129,13184,13190,13196,13201,13206,13212,13217,13228],{"type":23,"tag":24,"props":12893,"children":12895},{"id":12894},"openubmc-observability-full-insight-into-the-system-for-a-new-bmc-vision",[12896],{"type":29,"value":12882},{"type":23,"tag":37,"props":12898,"children":12899},{},[12900],{"type":29,"value":12883},{"type":23,"tag":37,"props":12902,"children":12903},{},[12904],{"type":29,"value":12905},"This article explores the advantages, value, and prospects of openUBMC Observability. We look forward to your participation in the capability development of openUBMC Observability.",{"type":23,"tag":4161,"props":12907,"children":12909},{"id":12908},"advantages",[12910],{"type":29,"value":12911},"Advantages",{"type":23,"tag":4530,"props":12913,"children":12915},{"id":12914},"_1-unified-data-collection-and-management",[12916],{"type":29,"value":12917},"1. Unified Data Collection and Management",{"type":23,"tag":37,"props":12919,"children":12920},{},[12921],{"type":29,"value":12922},"openUBMC uses openTelemetry to implement unified collection and management of metrics, logs, and traces. All data, including hardware status, system performance, and software status, is integrated and reported to openUBMC to ensure data integrity and consistency.",{"type":23,"tag":60,"props":12924,"children":12925},{},[12926,12939,12952],{"type":23,"tag":64,"props":12927,"children":12928},{},[12929,12934,12937],{"type":23,"tag":4453,"props":12930,"children":12931},{},[12932],{"type":29,"value":12933},"Standard programming APIs",{"type":23,"tag":5984,"props":12935,"children":12936},{},[],{"type":29,"value":12938},"\nopenUBMC encapsulates and provides application programming interfaces (APIs) based on openTelemetry to simplify data collection. Developers can easily integrate telemetry data into the BMC system through simple API calls.",{"type":23,"tag":64,"props":12940,"children":12941},{},[12942,12947,12950],{"type":23,"tag":4453,"props":12943,"children":12944},{},[12945],{"type":29,"value":12946},"Standard data formats",{"type":23,"tag":5984,"props":12948,"children":12949},{},[],{"type":29,"value":12951},"\nThe unified telemetry framework defines compatible and consistent formats for metrics, logs, and traces, facilitating subsequent data processing and analysis.",{"type":23,"tag":64,"props":12953,"children":12954},{},[12955,12960,12963],{"type":23,"tag":4453,"props":12956,"children":12957},{},[12958],{"type":29,"value":12959},"Standard transmission protocols",{"type":23,"tag":5984,"props":12961,"children":12962},{},[],{"type":29,"value":12964},"\nopenTelemetry Protocol (OTLP) is used, supporting both gRPC and HTTP\u002FJSON. gRPC is applicable to high-performance scenarios for efficient data transfer. HTTP\u002FJSON provides wide compatibility, facilitating integration with existing systems and tools.",{"type":23,"tag":37,"props":12966,"children":12967},{},[12968],{"type":23,"tag":129,"props":12969,"children":12971},{"alt":4236,"src":12970},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg01-en.png",[],{"type":23,"tag":4530,"props":12973,"children":12975},{"id":12974},"_2-seamless-integration-with-mainstream-tools",[12976],{"type":29,"value":12977},"2. Seamless Integration with Mainstream Tools",{"type":23,"tag":37,"props":12979,"children":12980},{},[12981],{"type":29,"value":12982},"openTelemetry Collector allows openUBMC Observability to seamlessly integrate with tools such as Prometheus, Zipkin, Jaeger, and Elasticsearch, Logstash, and Kibana (ELK). In this way, powerful data visualization and analysis capabilities are provided to help users better understand and optimize system performance.",{"type":23,"tag":60,"props":12984,"children":12985},{},[12986,12996],{"type":23,"tag":64,"props":12987,"children":12988},{},[12989,12994],{"type":23,"tag":4453,"props":12990,"children":12991},{},[12992],{"type":29,"value":12993},"Data collection and processing",{"type":29,"value":12995},"\nopenTelemetry Collector supports multiple data formats and protocols, and can flexibly process telemetry data (metrics, logs, and traces) from various data sources.",{"type":23,"tag":64,"props":12997,"children":12998},{},[12999,13004],{"type":23,"tag":4453,"props":13000,"children":13001},{},[13002],{"type":29,"value":13003},"Data conversion and export",{"type":29,"value":13005},"\nopenTelemetry Collector can convert collected data and export it to different target systems, such as Prometheus, Grafana, and Jaeger. This enables the observability data from the BMC to be simultaneously used by multiple tools, thereby improving data utilization.",{"type":23,"tag":37,"props":13007,"children":13008},{},[13009],{"type":23,"tag":129,"props":13010,"children":13012},{"alt":4236,"src":13011},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg02-en.png",[],{"type":23,"tag":4530,"props":13014,"children":13016},{"id":13015},"_3-powerful-distributed-tracing-capability",[13017],{"type":29,"value":13018},"3. Powerful Distributed Tracing Capability",{"type":23,"tag":37,"props":13020,"children":13021},{},[13022],{"type":29,"value":13023},"With the visualized analysis capability of platforms such as Zipkin, openUBMC can clearly display the complete call paths. Developers can easily trace every operation from hardware to software, and thus quickly locate performance bottlenecks and faults.",{"type":23,"tag":37,"props":13025,"children":13026},{},[13027],{"type":23,"tag":129,"props":13028,"children":13030},{"alt":4236,"src":13029},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg03-en.png",[],{"type":23,"tag":4530,"props":13032,"children":13034},{"id":13033},"_4-high-scalability-and-flexibility",[13035],{"type":29,"value":13036},"4. High Scalability and Flexibility",{"type":23,"tag":37,"props":13038,"children":13039},{},[13040],{"type":29,"value":13041},"openUBMC provides APIs to support highly scalable observability. Developers can customize data collection and processing logic as required to meet observation requirements in different scenarios.",{"type":23,"tag":4161,"props":13043,"children":13045},{"id":13044},"value",[13046],{"type":29,"value":13047},"Value",{"type":23,"tag":37,"props":13049,"children":13050},{},[13051],{"type":29,"value":13052},"Data-driven benefits: By monitoring the hardware and software status in real time, openUBMC aggregates and analyzes data to accurately identify performance bottlenecks and potential risks. With targeted data collection, it identifies and locates anomalies early in the development phase, effectively preventing failures and enhancing overall system stability and reliability.",{"type":23,"tag":37,"props":13054,"children":13055},{},[13056],{"type":29,"value":13057},"During fault locating, clear call traces and accurate performance data enable developers to quickly define the fault scope, accurately trace the root cause, and significantly shorten the fault rectification time. The following issues were identified using the observability component during the R&D of the 25.06 version:",{"type":23,"tag":60,"props":13059,"children":13060},{},[13061,13081,13098],{"type":23,"tag":64,"props":13062,"children":13063},{},[13064,13069,13072,13074,13077],{"type":23,"tag":4453,"props":13065,"children":13066},{},[13067],{"type":29,"value":13068},"Flash log flooding",{"type":23,"tag":5984,"props":13070,"children":13071},{},[],{"type":29,"value":13073},"\nBy monitoring the flash write volume and analyzing its growth trend, openUBMC detected and prevented flash lifespan degradation caused by excessive writes.",{"type":23,"tag":5984,"props":13075,"children":13076},{},[],{"type":23,"tag":129,"props":13078,"children":13080},{"alt":4236,"src":13079},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg04-en.png",[],{"type":23,"tag":64,"props":13082,"children":13083},{},[13084,13089,13091,13094],{"type":23,"tag":4453,"props":13085,"children":13086},{},[13087],{"type":29,"value":13088},"Hardware access failure",{"type":29,"value":13090},"\nBy monitoring hardware access metrics and filtering access errors, openUBMC detected and prevented faulty hardware through the error growth trend analysis.",{"type":23,"tag":5984,"props":13092,"children":13093},{},[],{"type":23,"tag":129,"props":13095,"children":13097},{"alt":4236,"src":13096},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg05-en.png",[],{"type":23,"tag":64,"props":13099,"children":13100},{},[13101,13106,13109,13111,13114],{"type":23,"tag":4453,"props":13102,"children":13103},{},[13104],{"type":29,"value":13105},"Improper CSR configuration",{"type":23,"tag":5984,"props":13107,"children":13108},{},[],{"type":29,"value":13110},"\nBy monitoring hardware access metrics and analyzing the collected data, openUBMC detected and prevented improper or invalid device access configurations in the CSR, optimizing hardware access cycles and improving overall BMC performance.",{"type":23,"tag":5984,"props":13112,"children":13113},{},[],{"type":23,"tag":129,"props":13115,"children":13117},{"alt":4236,"src":13116},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg06-en.png",[],{"type":23,"tag":4161,"props":13119,"children":13121},{"id":13120},"prospects-jointly-building-openubmc-observability",[13122],{"type":29,"value":13123},"Prospects: Jointly Building openUBMC Observability",{"type":23,"tag":37,"props":13125,"children":13126},{},[13127],{"type":29,"value":13128},"openUBMC Observability is open and extensible. We welcome more developers and community partners to join us in improving and optimizing the capability. Looking ahead, we will continue focusing our efforts on the following key areas:",{"type":23,"tag":4920,"props":13130,"children":13131},{},[13132,13145,13158,13171],{"type":23,"tag":64,"props":13133,"children":13134},{},[13135,13140,13143],{"type":23,"tag":4453,"props":13136,"children":13137},{},[13138],{"type":29,"value":13139},"Enhance deep integration of hardware and software.",{"type":23,"tag":5984,"props":13141,"children":13142},{},[],{"type":29,"value":13144},"\nDeepen the collaborative observability between hardware and software to provide a more comprehensive device management perspective.",{"type":23,"tag":64,"props":13146,"children":13147},{},[13148,13153,13156],{"type":23,"tag":4453,"props":13149,"children":13150},{},[13151],{"type":29,"value":13152},"Introduce AI-driven anomaly detection.",{"type":23,"tag":5984,"props":13154,"children":13155},{},[],{"type":29,"value":13157},"\nUse AI technologies to intelligently analyze observed data and detect potential issues in advance.",{"type":23,"tag":64,"props":13159,"children":13160},{},[13161,13166,13169],{"type":23,"tag":4453,"props":13162,"children":13163},{},[13164],{"type":29,"value":13165},"Building a developer-friendly tool chain",{"type":23,"tag":5984,"props":13167,"children":13168},{},[],{"type":29,"value":13170},"\nProvide more easy-to-use tools and plug-ins to lower the barrier for developers to use openUBMC Observability.",{"type":23,"tag":64,"props":13172,"children":13173},{},[13174,13179,13182],{"type":23,"tag":4453,"props":13175,"children":13176},{},[13177],{"type":29,"value":13178},"Promoting community co-construction",{"type":23,"tag":5984,"props":13180,"children":13181},{},[],{"type":29,"value":13183},"\nWork with community developers to improve openUBMC Observability through technical sharing and open source contributions.",{"type":23,"tag":4161,"props":13185,"children":13187},{"id":13186},"summary",[13188],{"type":29,"value":13189},"Summary",{"type":23,"tag":4530,"props":13191,"children":13193},{"id":13192},"full-insight-into-the-system-for-a-new-bmc-vision",[13194],{"type":29,"value":13195},"Full Insight into the System for a New BMC Vision",{"type":23,"tag":37,"props":13197,"children":13198},{},[13199],{"type":29,"value":13200},"openUBMC Observability is built based on openTelemetry. It not only improves system stability and performance, but also provides developers with an efficient and flexible platform for development and observation. We believe that through the joint efforts of the community and partners, openUBMC Observability will become more comprehensive and deliver more benefits to developers and users.",{"type":23,"tag":37,"props":13202,"children":13203},{},[13204],{"type":29,"value":13205},"If you are interested in openUBMC Observability, we warmly invite you to join our community. Let's explore and build a smarter, more reliable BMC system.",{"type":23,"tag":4530,"props":13207,"children":13209},{"id":13208},"join-us-to-build-openubmc-observability",[13210],{"type":29,"value":13211},"Join Us to Build openUBMC Observability",{"type":23,"tag":37,"props":13213,"children":13214},{},[13215],{"type":29,"value":13216},"You are welcome to share your ideas and questions through the community forum, submit issues, or join Interface SIG regular meetings.",{"type":23,"tag":37,"props":13218,"children":13219},{},[13220,13222],{"type":29,"value":13221},"GitCode repository: ",{"type":23,"tag":43,"props":13223,"children":13226},{"href":13224,"rel":13225},"https:\u002F\u002Fgitcode.com\u002FopenUBMC\u002Fobservability",[47],[13227],{"type":29,"value":13224},{"type":23,"tag":37,"props":13229,"children":13230},{},[13231,13233],{"type":29,"value":13232},"Community forum: ",{"type":23,"tag":43,"props":13234,"children":13237},{"href":13235,"rel":13236},"https:\u002F\u002Fdiscuss.openubmc.cn",[47],[13238],{"type":29,"value":13235},{"title":9,"searchDepth":392,"depth":392,"links":13240},[13241,13247,13248,13249],{"id":12908,"depth":364,"text":12911,"children":13242},[13243,13244,13245,13246],{"id":12914,"depth":379,"text":12917},{"id":12974,"depth":379,"text":12977},{"id":13015,"depth":379,"text":13018},{"id":13033,"depth":379,"text":13036},{"id":13044,"depth":364,"text":13047},{"id":13120,"depth":364,"text":13123},{"id":13186,"depth":364,"text":13189,"children":13250},[13251,13252],{"id":13192,"depth":379,"text":13195},{"id":13208,"depth":379,"text":13211},"content:en:blogs:202508071.md","en\u002Fblogs\u002F202508071.md","en\u002Fblogs\u002F202508071","openUBMC Observability: Full Insight into the System for a New BMC Vision As digital transformation surges forward, system complexities escalate continuously. The efficient monitoring and management of distributed systems have become a key challenge. As a bridge between hardware and software, the baseboard management controller (BMC) is responsible for device management, monitoring, and maintenance. openUBMC 25.06 introduces the Observability component to provide complete observability capabilities based on openTelemetry, enabling developers to clearly understand system status, quickly locate issues, and optimize system performance. This article explores the advantages, value, and prospects of openUBMC Observability. We look forward to your participation in the capability development of openUBMC Observability. Advantages 1. Unified Data Collection and Management openUBMC uses openTelemetry to implement unified collection and management of metrics, logs, and traces. All data, including hardware status, system performance, and software status, is integrated and reported to openUBMC to ensure data integrity and consistency. Standard programming APIs  \nopenUBMC encapsulates and provides application programming interfaces (APIs) based on openTelemetry to simplify data collection. Developers can easily integrate telemetry data into the BMC system through simple API calls. Standard data formats  \nThe unified telemetry framework defines compatible and consistent formats for metrics, logs, and traces, facilitating subsequent data processing and analysis. Standard transmission protocols  \nopenTelemetry Protocol (OTLP) is used, supporting both gRPC and HTTP\u002FJSON. gRPC is applicable to high-performance scenarios for efficient data transfer. HTTP\u002FJSON provides wide compatibility, facilitating integration with existing systems and tools.  2. Seamless Integration with Mainstream Tools openTelemetry Collector allows openUBMC Observability to seamlessly integrate with tools such as Prometheus, Zipkin, Jaeger, and Elasticsearch, Logstash, and Kibana (ELK). In this way, powerful data visualization and analysis capabilities are provided to help users better understand and optimize system performance. Data collection and processing \nopenTelemetry Collector supports multiple data formats and protocols, and can flexibly process telemetry data (metrics, logs, and traces) from various data sources. Data conversion and export \nopenTelemetry Collector can convert collected data and export it to different target systems, such as Prometheus, Grafana, and Jaeger. This enables the observability data from the BMC to be simultaneously used by multiple tools, thereby improving data utilization.  3. Powerful Distributed Tracing Capability With the visualized analysis capability of platforms such as Zipkin, openUBMC can clearly display the complete call paths. Developers can easily trace every operation from hardware to software, and thus quickly locate performance bottlenecks and faults.  4. High Scalability and Flexibility openUBMC provides APIs to support highly scalable observability. Developers can customize data collection and processing logic as required to meet observation requirements in different scenarios. Value Data-driven benefits: By monitoring the hardware and software status in real time, openUBMC aggregates and analyzes data to accurately identify performance bottlenecks and potential risks. With targeted data collection, it identifies and locates anomalies early in the development phase, effectively preventing failures and enhancing overall system stability and reliability. During fault locating, clear call traces and accurate performance data enable developers to quickly define the fault scope, accurately trace the root cause, and significantly shorten the fault rectification time. The following issues were identified using the observability component during the R&D of the 25.06 version: Flash log flooding  \nBy monitoring the flash write volume and analyzing its growth trend, openUBMC detected and prevented flash lifespan degradation caused by excessive writes.   Hardware access failure \nBy monitoring hardware access metrics and filtering access errors, openUBMC detected and prevented faulty hardware through the error growth trend analysis.   Improper CSR configuration  \nBy monitoring hardware access metrics and analyzing the collected data, openUBMC detected and prevented improper or invalid device access configurations in the CSR, optimizing hardware access cycles and improving overall BMC performance.   Prospects: Jointly Building openUBMC Observability openUBMC Observability is open and extensible. We welcome more developers and community partners to join us in improving and optimizing the capability. Looking ahead, we will continue focusing our efforts on the following key areas: Enhance deep integration of hardware and software.  \nDeepen the collaborative observability between hardware and software to provide a more comprehensive device management perspective. Introduce AI-driven anomaly detection.  \nUse AI technologies to intelligently analyze observed data and detect potential issues in advance. Building a developer-friendly tool chain  \nProvide more easy-to-use tools and plug-ins to lower the barrier for developers to use openUBMC Observability. Promoting community co-construction  \nWork with community developers to improve openUBMC Observability through technical sharing and open source contributions. Summary Full Insight into the System for a New BMC Vision openUBMC Observability is built based on openTelemetry. It not only improves system stability and performance, but also provides developers with an efficient and flexible platform for development and observation. We believe that through the joint efforts of the community and partners, openUBMC Observability will become more comprehensive and deliver more benefits to developers and users. If you are interested in openUBMC Observability, we warmly invite you to join our community. Let's explore and build a smarter, more reliable BMC system. Join Us to Build openUBMC Observability You are welcome to share your ideas and questions through the community forum, submit issues, or join Interface SIG regular meetings. GitCode repository:  https:\u002F\u002Fgitcode.com\u002FopenUBMC\u002Fobservability Community forum:  https:\u002F\u002Fdiscuss.openubmc.cn",[12888],{"_path":13259,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":13260,"description":13261,"date":12884,"category":12885,"author":13262,"body":13266,"_type":4181,"_id":13605,"_source":4183,"_file":13606,"_stem":13607,"_extension":4186,"coverImage":13358,"plainText":13608,"authorNames":13609},"\u002Fen\u002Fblogs\u002F202508072","AI-Powered R&D: Rapid NCSI Protocol Command Parsing in openUBMC","NCSIis a critical protocol enabling communications between the baseboard management controller (BMC) and the network controller. During the development of the openUBMC 25.06 version, I encountered several bottlenecks:",[13263],{"name":13264,"description":13265},"钱昱霏","BMC developer, specializing in software development and improving automation efficiency, with unique insights into AI-assisted R&D.",{"type":20,"children":13267,"toc":13590},[13268,13273,13279,13293,13326,13331,13337,13342,13348,13353,13360,13366,13371,13376,13382,13387,13392,13398,13403,13411,13429,13437,13442,13447,13454,13462,13467,13485,13491,13499,13506,13512,13520,13527,13533,13541,13548,13554,13559,13564,13570,13580],{"type":23,"tag":24,"props":13269,"children":13271},{"id":13270},"ai-powered-rd-rapid-ncsi-protocol-command-parsing-in-openubmc",[13272],{"type":29,"value":13260},{"type":23,"tag":4161,"props":13274,"children":13276},{"id":13275},"background-repetitive-work-in-protocol-command-development",[13277],{"type":29,"value":13278},"Background: Repetitive Work in Protocol Command Development",{"type":23,"tag":37,"props":13280,"children":13281},{},[13282,13284,13291],{"type":29,"value":13283},"NCSI",{"type":23,"tag":13285,"props":13286,"children":13288},"font",{"color":13287},"#b0b0b0",[13289],{"type":29,"value":13290}," (Network Controller Sideband Interface) ",{"type":29,"value":13292},"is a critical protocol enabling communications between the baseboard management controller (BMC) and the network controller. During the development of the openUBMC 25.06 version, I encountered several bottlenecks:",{"type":23,"tag":60,"props":13294,"children":13295},{},[13296,13306,13316],{"type":23,"tag":64,"props":13297,"children":13298},{},[13299,13304],{"type":23,"tag":4453,"props":13300,"children":13301},{},[13302],{"type":29,"value":13303},"High code duplication",{"type":29,"value":13305},": Except for the request\u002Fresponse payload structure, the code logic for different NCSI commands was nearly identical, leading to extensive boilerplate.",{"type":23,"tag":64,"props":13307,"children":13308},{},[13309,13314],{"type":23,"tag":4453,"props":13310,"children":13311},{},[13312],{"type":29,"value":13313},"Manual generation of test data",{"type":29,"value":13315},": Binary test data had to be calculated and written manually. This process was complex and highly prone to error.",{"type":23,"tag":64,"props":13317,"children":13318},{},[13319,13324],{"type":23,"tag":4453,"props":13320,"children":13321},{},[13322],{"type":29,"value":13323},"Dense and vague documentation",{"type":29,"value":13325},": The NCSI protocol specification is English-only and technically dense, requiring significant effort to read and often leading to misinterpretation of certain sections.",{"type":23,"tag":37,"props":13327,"children":13328},{},[13329],{"type":29,"value":13330},"To ensure a high-quality delivery, I turned to the cutting-edge capabilities of AI-assisted coding, hoping to harness the power of LLMs to streamline this development work.",{"type":23,"tag":4161,"props":13332,"children":13334},{"id":13333},"pattern-analysis-identifying-the-automatable-core",[13335],{"type":29,"value":13336},"Pattern Analysis: Identifying the \"Automatable\" Core",{"type":23,"tag":37,"props":13338,"children":13339},{},[13340],{"type":29,"value":13341},"Blindly relying on AI to write code independently can be counterproductive, as current AI tools cannot fully replace human expertise. The first step was to analyze the code structure and functional modules to identify areas where the AI could be most effective.",{"type":23,"tag":4530,"props":13343,"children":13345},{"id":13344},"_1-protocol-documentation-understanding-and-command-extraction",[13346],{"type":29,"value":13347},"1. Protocol Documentation Understanding and Command Extraction",{"type":23,"tag":37,"props":13349,"children":13350},{},[13351],{"type":29,"value":13352},"Modern LLMs excel at natural language understanding, especially with English documentation. This strength was used to extract the request and response packet formats for each NCSI command directly from the protocol specification.",{"type":23,"tag":37,"props":13354,"children":13355},{},[13356],{"type":23,"tag":129,"props":13357,"children":13359},{"alt":4236,"src":13358},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg07.webp",[],{"type":23,"tag":4530,"props":13361,"children":13363},{"id":13362},"_2-writing-command-handler-functions",[13364],{"type":29,"value":13365},"2. Writing Command Handler Functions",{"type":23,"tag":37,"props":13367,"children":13368},{},[13369],{"type":29,"value":13370},"To guide the LLM and prevent unnecessary deviation, I pre-defined the function signatures for the protocol request and response handlers. Existing openUBMC code was provided as context to ensure the generated code adhered to the community's coding style.",{"type":23,"tag":37,"props":13372,"children":13373},{},[13374],{"type":29,"value":13375},"BMC-specific requirements, such as logging operational history, were also provided as templates, instructing the LLM to include operation log recording in all setter-type command functions.",{"type":23,"tag":4530,"props":13377,"children":13379},{"id":13378},"_3-generating-test-cases-for-protocol-compliance",[13380],{"type":29,"value":13381},"3. Generating Test Cases for Protocol Compliance",{"type":23,"tag":37,"props":13383,"children":13384},{},[13385],{"type":29,"value":13386},"To guarantee the quality of the generated code, openUBMC's Unit Test (UT) framework was used for rapid verification. Crucially, the test code itself was also generated using the LLM.",{"type":23,"tag":37,"props":13388,"children":13389},{},[13390],{"type":29,"value":13391},"Leveraging the LLM's understanding of the NCSI binary protocol, it could quickly derive the necessary test data, eliminating the tedious, error-prone process of manually crafting binary packets.",{"type":23,"tag":4161,"props":13393,"children":13395},{"id":13394},"coding-in-practice-practical-prompt-templates",[13396],{"type":29,"value":13397},"Coding in Practice: Practical Prompt Templates",{"type":23,"tag":37,"props":13399,"children":13400},{},[13401],{"type":29,"value":13402},"I utilized a combination of GPT-4.1 and Cursor for the toolset. Through iterative practice, I summarized a set of high-efficiency prompt templates, which are shared below.",{"type":23,"tag":37,"props":13404,"children":13405},{},[13406],{"type":23,"tag":4453,"props":13407,"children":13408},{},[13409],{"type":29,"value":13410},"Key Results:",{"type":23,"tag":60,"props":13412,"children":13413},{},[13414,13419,13424],{"type":23,"tag":64,"props":13415,"children":13416},{},[13417],{"type":29,"value":13418},"80+ functions and corresponding test cases generated automatically, with the accuracy exceeding 90% and the UT coverage above 86%.",{"type":23,"tag":64,"props":13420,"children":13421},{},[13422],{"type":29,"value":13423},"Overall development efficiency increased by 65%, saving an estimated 30+ person-days.",{"type":23,"tag":64,"props":13425,"children":13426},{},[13427],{"type":29,"value":13428},"Code style was consistent with community standards, leading to a smooth review by the SIG Committer.",{"type":23,"tag":37,"props":13430,"children":13431},{},[13432],{"type":23,"tag":4453,"props":13433,"children":13434},{},[13435],{"type":29,"value":13436},"Knowledge Background Setup",{"type":23,"tag":37,"props":13438,"children":13439},{},[13440],{"type":29,"value":13441},"Thanks to Cursor's powerful context awareness, existing code files in the repository were automatically included in the LLM's analysis (for example, Lua syntax and style). However, the NCSI protocol document was external.",{"type":23,"tag":37,"props":13443,"children":13444},{},[13445],{"type":29,"value":13446},"Crucially, Cursor supports integrating the full protocol document as a knowledge base. I imported the public NCSI specification into Cursor, providing the AI with a solid theoretical foundation for the command parsing work.",{"type":23,"tag":37,"props":13448,"children":13449},{},[13450],{"type":23,"tag":129,"props":13451,"children":13453},{"alt":4236,"src":13452},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg08.webp",[],{"type":23,"tag":37,"props":13455,"children":13456},{},[13457],{"type":23,"tag":4453,"props":13458,"children":13459},{},[13460],{"type":29,"value":13461},"Template Breakdown",{"type":23,"tag":37,"props":13463,"children":13464},{},[13465],{"type":29,"value":13466},"I broke the task into three steps, using an iterative generation and Q&A approach to further boost code accuracy, and wrote corresponding prompts:",{"type":23,"tag":4920,"props":13468,"children":13469},{},[13470,13475,13480],{"type":23,"tag":64,"props":13471,"children":13472},{},[13473],{"type":29,"value":13474},"Generate NCSI command response and parsing functions.",{"type":23,"tag":64,"props":13476,"children":13477},{},[13478],{"type":29,"value":13479},"Generate corresponding UT functions and test data for the created functions.",{"type":23,"tag":64,"props":13481,"children":13482},{},[13483],{"type":29,"value":13484},"Optimize all newly added code.",{"type":23,"tag":4530,"props":13486,"children":13488},{"id":13487},"prompt-example-1-generating-new-functions",[13489],{"type":29,"value":13490},"Prompt Example 1: Generating New Functions",{"type":23,"tag":341,"props":13492,"children":13494},{"code":13493},"Based on the existing code pattern below, generate the corresponding function for the new NCSI command [COMMAND_NAME]:\nReference Header File Definitions:\nCommand type macros: Refer to command constants in header files under test-main\u002Fncsi path.\nPacket structure definitions: Refer to request\u002Fresponse structs in the header file.\nLength macros: Refer to *_REQ_LEN, *_RSP_LEN, *_PAD_LEN, etc. in the header file.\n\nExisting Pattern:\nfunction ncsi_cmd.ncsi_enable_channel(package_id, channel_id, eth_name)\n\nRequirements:\n1. Function name must be ncsi_[COMMAND_NAME].\n2. Parameters must be package_id, channel_id, eth_name.\n3. Must include the same parameter validation logic.\n4. Must call the corresponding module function.\n5. Must return the same error codes.\n\nPlease generate the complete function code.\n",[13495],{"type":23,"tag":140,"props":13496,"children":13497},{"__ignoreMap":9},[13498],{"type":29,"value":13493},{"type":23,"tag":37,"props":13500,"children":13501},{},[13502],{"type":23,"tag":129,"props":13503,"children":13505},{"alt":4236,"src":13504},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg09.webp",[],{"type":23,"tag":4530,"props":13507,"children":13509},{"id":13508},"prompt-example-2-generating-test-cases",[13510],{"type":29,"value":13511},"Prompt Example 2: Generating Test Cases",{"type":23,"tag":341,"props":13513,"children":13515},{"code":13514},"Based on the testing pattern below, generate a complete test case file for the [MODULE_NAME] module:\n\nExisting Testing Pattern:\nfunction TestNCSIBroadcastFilter:test_enable_broadcast_filter()\n\nRequirements:\n1. Create a test class TestNCSI[MODULE_NAME] for [MODULE_NAME].\n2. Include setUp and tearDown methods.\n3. Generate a test case for every public function.\n4. Include both success and failure scenario tests.\n5. Validate the request packet format.\n6. Include boundary condition tests.\n\nPlease generate the complete test file.\n",[13516],{"type":23,"tag":140,"props":13517,"children":13518},{"__ignoreMap":9},[13519],{"type":29,"value":13514},{"type":23,"tag":37,"props":13521,"children":13522},{},[13523],{"type":23,"tag":129,"props":13524,"children":13526},{"alt":4236,"src":13525},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg10.webp",[],{"type":23,"tag":4530,"props":13528,"children":13530},{"id":13529},"prompt-example-3-code-optimization",[13531],{"type":29,"value":13532},"Prompt Example 3: Code Optimization",{"type":23,"tag":341,"props":13534,"children":13536},{"code":13535},"Code Optimization Suggestions\n\nAnalyze the code under the src\u002Flualib\u002Fncsi\u002Fncsi_protocol\u002F directory.\nIdentify repetitive patterns that can be further optimized.\n\nCurrently optimized patterns:\n1. Using the handle_channel_operation generic function.\n2. Using ncsi_utils.create_custom_cmd_table.\n3. Using the command table pattern.\n\nAnalyze what other repetitive code can be further optimized and provide specific optimization plans and code implementations.\n",[13537],{"type":23,"tag":140,"props":13538,"children":13539},{"__ignoreMap":9},[13540],{"type":29,"value":13535},{"type":23,"tag":37,"props":13542,"children":13543},{},[13544],{"type":23,"tag":129,"props":13545,"children":13547},{"alt":4236,"src":13546},"\u002Fcategory\u002Fblog\u002F20250807\u002Fimg11.webp",[],{"type":23,"tag":4161,"props":13549,"children":13551},{"id":13550},"conclusion-and-outlook",[13552],{"type":29,"value":13553},"Conclusion and Outlook",{"type":23,"tag":37,"props":13555,"children":13556},{},[13557],{"type":29,"value":13558},"While the dream of \"one-click complete code generation\" isn't fully realized yet, the practical value of LLMs in R&D assistance is exceptionally high. This new development paradigm is poised to disrupt traditional workflows, bringing a revolutionary experience to the BMC and firmware fields.",{"type":23,"tag":37,"props":13560,"children":13561},{},[13562],{"type":29,"value":13563},"I look forward to seeing more AI-assisted coding practices within the openUBMC community to spark further innovation. Developers are welcome to share their experiences and insights as we collectively explore the boundless possibilities of AI-assisted coding!",{"type":23,"tag":4161,"props":13565,"children":13567},{"id":13566},"welcome-to-follow-us",[13568],{"type":29,"value":13569},"Welcome to follow us!",{"type":23,"tag":37,"props":13571,"children":13572},{},[13573,13575],{"type":29,"value":13574},"openUBMC official website: ",{"type":23,"tag":43,"props":13576,"children":13578},{"href":4393,"rel":13577},[47],[13579],{"type":29,"value":4393},{"type":23,"tag":37,"props":13581,"children":13582},{},[13583,13585],{"type":29,"value":13584},"Code repository: ",{"type":23,"tag":43,"props":13586,"children":13588},{"href":4404,"rel":13587},[47],[13589],{"type":29,"value":4404},{"title":9,"searchDepth":392,"depth":392,"links":13591},[13592,13593,13598,13603,13604],{"id":13275,"depth":364,"text":13278},{"id":13333,"depth":364,"text":13336,"children":13594},[13595,13596,13597],{"id":13344,"depth":379,"text":13347},{"id":13362,"depth":379,"text":13365},{"id":13378,"depth":379,"text":13381},{"id":13394,"depth":364,"text":13397,"children":13599},[13600,13601,13602],{"id":13487,"depth":379,"text":13490},{"id":13508,"depth":379,"text":13511},{"id":13529,"depth":379,"text":13532},{"id":13550,"depth":364,"text":13553},{"id":13566,"depth":364,"text":13569},"content:en:blogs:202508072.md","en\u002Fblogs\u002F202508072.md","en\u002Fblogs\u002F202508072","AI-Powered R&D: Rapid NCSI Protocol Command Parsing in openUBMC Background: Repetitive Work in Protocol Command Development NCSI  (Network Controller Sideband Interface)  is a critical protocol enabling communications between the baseboard management controller (BMC) and the network controller. During the development of the openUBMC 25.06 version, I encountered several bottlenecks: High code duplication : Except for the request\u002Fresponse payload structure, the code logic for different NCSI commands was nearly identical, leading to extensive boilerplate. Manual generation of test data : Binary test data had to be calculated and written manually. This process was complex and highly prone to error. Dense and vague documentation : The NCSI protocol specification is English-only and technically dense, requiring significant effort to read and often leading to misinterpretation of certain sections. To ensure a high-quality delivery, I turned to the cutting-edge capabilities of AI-assisted coding, hoping to harness the power of LLMs to streamline this development work. Pattern Analysis: Identifying the \"Automatable\" Core Blindly relying on AI to write code independently can be counterproductive, as current AI tools cannot fully replace human expertise. The first step was to analyze the code structure and functional modules to identify areas where the AI could be most effective. 1. Protocol Documentation Understanding and Command Extraction Modern LLMs excel at natural language understanding, especially with English documentation. This strength was used to extract the request and response packet formats for each NCSI command directly from the protocol specification.  2. Writing Command Handler Functions To guide the LLM and prevent unnecessary deviation, I pre-defined the function signatures for the protocol request and response handlers. Existing openUBMC code was provided as context to ensure the generated code adhered to the community's coding style. BMC-specific requirements, such as logging operational history, were also provided as templates, instructing the LLM to include operation log recording in all setter-type command functions. 3. Generating Test Cases for Protocol Compliance To guarantee the quality of the generated code, openUBMC's Unit Test (UT) framework was used for rapid verification. Crucially, the test code itself was also generated using the LLM. Leveraging the LLM's understanding of the NCSI binary protocol, it could quickly derive the necessary test data, eliminating the tedious, error-prone process of manually crafting binary packets. Coding in Practice: Practical Prompt Templates I utilized a combination of GPT-4.1 and Cursor for the toolset. Through iterative practice, I summarized a set of high-efficiency prompt templates, which are shared below. Key Results: 80+ functions and corresponding test cases generated automatically, with the accuracy exceeding 90% and the UT coverage above 86%. Overall development efficiency increased by 65%, saving an estimated 30+ person-days. Code style was consistent with community standards, leading to a smooth review by the SIG Committer. Knowledge Background Setup Thanks to Cursor's powerful context awareness, existing code files in the repository were automatically included in the LLM's analysis (for example, Lua syntax and style). However, the NCSI protocol document was external. Crucially, Cursor supports integrating the full protocol document as a knowledge base. I imported the public NCSI specification into Cursor, providing the AI with a solid theoretical foundation for the command parsing work.  Template Breakdown I broke the task into three steps, using an iterative generation and Q&A approach to further boost code accuracy, and wrote corresponding prompts: Generate NCSI command response and parsing functions. Generate corresponding UT functions and test data for the created functions. Optimize all newly added code. Prompt Example 1: Generating New Functions Based on the existing code pattern below, generate the corresponding function for the new NCSI command [COMMAND_NAME]:\nReference Header File Definitions:\nCommand type macros: Refer to command constants in header files under test-main\u002Fncsi path.\nPacket structure definitions: Refer to request\u002Fresponse structs in the header file.\nLength macros: Refer to *_REQ_LEN, *_RSP_LEN, *_PAD_LEN, etc. in the header file.\n\nExisting Pattern:\nfunction ncsi_cmd.ncsi_enable_channel(package_id, channel_id, eth_name)\n\nRequirements:\n1. Function name must be ncsi_[COMMAND_NAME].\n2. Parameters must be package_id, channel_id, eth_name.\n3. Must include the same parameter validation logic.\n4. Must call the corresponding module function.\n5. Must return the same error codes.\n\nPlease generate the complete function code.\n  Prompt Example 2: Generating Test Cases Based on the testing pattern below, generate a complete test case file for the [MODULE_NAME] module:\n\nExisting Testing Pattern:\nfunction TestNCSIBroadcastFilter:test_enable_broadcast_filter()\n\nRequirements:\n1. Create a test class TestNCSI[MODULE_NAME] for [MODULE_NAME].\n2. Include setUp and tearDown methods.\n3. Generate a test case for every public function.\n4. Include both success and failure scenario tests.\n5. Validate the request packet format.\n6. Include boundary condition tests.\n\nPlease generate the complete test file.\n  Prompt Example 3: Code Optimization Code Optimization Suggestions\n\nAnalyze the code under the src\u002Flualib\u002Fncsi\u002Fncsi_protocol\u002F directory.\nIdentify repetitive patterns that can be further optimized.\n\nCurrently optimized patterns:\n1. Using the handle_channel_operation generic function.\n2. Using ncsi_utils.create_custom_cmd_table.\n3. Using the command table pattern.\n\nAnalyze what other repetitive code can be further optimized and provide specific optimization plans and code implementations.\n  Conclusion and Outlook While the dream of \"one-click complete code generation\" isn't fully realized yet, the practical value of LLMs in R&D assistance is exceptionally high. This new development paradigm is poised to disrupt traditional workflows, bringing a revolutionary experience to the BMC and firmware fields. I look forward to seeing more AI-assisted coding practices within the openUBMC community to spark further innovation. Developers are welcome to share their experiences and insights as we collectively explore the boundless possibilities of AI-assisted coding! Welcome to follow us! openUBMC official website:  https:\u002F\u002Fwww.openubmc.cn Code repository:  https:\u002F\u002Fgitcode.com\u002FopenUBMC\u002Fnetwork_adapter",[13264],{"_path":13611,"_dir":7,"_draft":8,"_partial":8,"_locale":9,"title":13612,"description":13613,"date":13614,"category":13,"author":13615,"body":13619,"_type":4181,"_id":14001,"_source":4183,"_file":14002,"_stem":14003,"_extension":4186,"coverImage":13651,"plainText":14004,"authorNames":14005},"\u002Fen\u002Fblogs\u002F20250726","Business Practice | How the openUBMC Community Development Pipeline Drives High-Quality Delivery for Yangtze Computing","In software development, the build phase is critical because it directly impacts development efficiency and software quality. To support local deployment of openUBMC and improve development efficiency within the enterprise, Yangtze Computing has introduced a developer build solution and a pipeline build solution. The offline deployment–based solutions cover infrastructure configuration and build system design, helping gain a deep understanding of how to construct and optimize the openUBMC build system.","2025\u002F07\u002F26",[13616],{"name":13617,"description":13618},"易重辉","BMC software development engineer at Wuhan Yangtze Computing Technology Co., Ltd., who is dedicated to openUBMC software development and has extensive expertise in BMC build and valuable insights for optimizing development processes.",{"type":20,"children":13620,"toc":13985},[13621,13626,13630,13634,13640,13646,13654,13659,13664,13670,13677,13682,13688,13696,13701,13706,13711,13716,13722,13728,13735,13740,13763,13768,13781,13787,13794,13799,13806,13811,13817,13824,13829,13836,13841,13847,13852,13859,13864,13907,13912,13918,13923,13930,13938,13943,13951,13956,13964,13969,13974,13980],{"type":23,"tag":24,"props":13622,"children":13624},{"id":13623},"business-practice-how-the-openubmc-community-development-pipeline-drives-high-quality-delivery-for-yangtze-computing",[13625],{"type":29,"value":13612},{"type":23,"tag":4161,"props":13627,"children":13628},{"id":32},[13629],{"type":29,"value":35},{"type":23,"tag":37,"props":13631,"children":13632},{},[13633],{"type":29,"value":13613},{"type":23,"tag":4161,"props":13635,"children":13637},{"id":13636},"infrastructure-configuration",[13638],{"type":29,"value":13639},"Infrastructure Configuration",{"type":23,"tag":4530,"props":13641,"children":13643},{"id":13642},"_1-infrastructure-and-resource-update-overview",[13644],{"type":29,"value":13645},"(1) Infrastructure and Resource Update Overview",{"type":23,"tag":37,"props":13647,"children":13648},{},[13649],{"type":23,"tag":129,"props":13650,"children":13653},{"alt":4236,"src":13651,"title":13652},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg01-en.png","Infrastructure and resource update method",[],{"type":23,"tag":37,"props":13655,"children":13656},{},[13657],{"type":29,"value":13658},"Like many companies, Yangtze Computing conducts most of its development in a pure intranet environment. A key challenge is making community infrastructure compatible with the enterprise's internal systems. To address this, Yangtze Computing has designed a technical solution that deploys openUBMC community resources through unidirectional data flows. Data moves from the Internet to the non-confidential intranet and then to the confidential intranet. This network design ensures both data security and development environment stability.",{"type":23,"tag":37,"props":13660,"children":13661},{},[13662],{"type":29,"value":13663},"Due to security requirements, additional deployment procedures have been introduced. To improve efficiency, automation is essential. Therefore, in Yangtze Computing's deployment process, the cross-network transfer of source code and Conan is fully automated via scripting.",{"type":23,"tag":4530,"props":13665,"children":13667},{"id":13666},"_2-infrastructure-configuration",[13668],{"type":29,"value":13669},"(2) Infrastructure Configuration",{"type":23,"tag":37,"props":13671,"children":13672},{},[13673],{"type":23,"tag":129,"props":13674,"children":13676},{"alt":4236,"src":13675},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg02-en.png",[],{"type":23,"tag":37,"props":13678,"children":13679},{},[13680],{"type":29,"value":13681},"The infrastructure Yangtze Computing sets up for the localized openUBMC deployment is complete, user-friendly, and secure. It provides strong technical support for their commercial release of openUBMC and helps streamline the BMC software development process. It also provides guidance for other enterprise developers building similar development environments and workflows.",{"type":23,"tag":4161,"props":13683,"children":13685},{"id":13684},"_3-developer-build-solution",[13686],{"type":29,"value":13687},"3 Developer Build Solution",{"type":23,"tag":37,"props":13689,"children":13690},{},[13691],{"type":23,"tag":129,"props":13692,"children":13695},{"alt":4236,"src":13693,"title":13694},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg03-en.png","Configuring and using build images",[],{"type":23,"tag":37,"props":13697,"children":13698},{},[13699],{"type":29,"value":13700},"Docker images form the foundation for both manual developer builds and automated pipeline builds. Uploading Docker images to a compile server allows developers to directly build services. Uploading Docker images to a container image repository enables pipelines to build services automatically.",{"type":23,"tag":37,"props":13702,"children":13703},{},[13704],{"type":29,"value":13705},"On a compile server, an independent compile container is created for each developer. This design isolates each developer's environment to prevent cross-interference.",{"type":23,"tag":37,"props":13707,"children":13708},{},[13709],{"type":29,"value":13710},"Developers can connect to the compile containers through SSH and carry out development. In practice, they can use pre-configured compile containers in a secure desktop environment, allowing them to focus on coding and debugging without worrying about environment setup.",{"type":23,"tag":37,"props":13712,"children":13713},{},[13714],{"type":29,"value":13715},"In addition, Yangtze Computing's compile containers support personal data persistence and include a read-only public directory. This design simplifies upgrades to the compilation environment and the transfer of development materials during maintenance.",{"type":23,"tag":4161,"props":13717,"children":13719},{"id":13718},"_4-pipeline-build-solution",[13720],{"type":29,"value":13721},"4 Pipeline Build Solution",{"type":23,"tag":4530,"props":13723,"children":13725},{"id":13724},"_1-pipeline-requirement-analysis",[13726],{"type":29,"value":13727},"(1) Pipeline Requirement Analysis",{"type":23,"tag":37,"props":13729,"children":13730},{},[13731],{"type":23,"tag":129,"props":13732,"children":13734},{"alt":4236,"src":13733},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg04-en.png",[],{"type":23,"tag":37,"props":13736,"children":13737},{},[13738],{"type":29,"value":13739},"Code gated check-in requirements:",{"type":23,"tag":60,"props":13741,"children":13742},{},[13743,13753],{"type":23,"tag":64,"props":13744,"children":13745},{},[13746,13751],{"type":23,"tag":4453,"props":13747,"children":13748},{},[13749],{"type":29,"value":13750},"Component gated check-in pipeline",{"type":29,"value":13752},": When component code is merged, the gated check-in pipeline is triggered, performing static code analysis, unit tests, and unit test coverage calculation. Code can be successfully merged only after passing these checks, ensuring high code quality.",{"type":23,"tag":64,"props":13754,"children":13755},{},[13756,13761],{"type":23,"tag":4453,"props":13757,"children":13758},{},[13759],{"type":29,"value":13760},"Product gated check-in pipeline",{"type":29,"value":13762},": When a product version changes due to component updates, a gated check-in is performed to verify that the product package can be built, ensuring the integrity and availability of the product version.",{"type":23,"tag":37,"props":13764,"children":13765},{},[13766],{"type":29,"value":13767},"Version build and release requirements:",{"type":23,"tag":60,"props":13769,"children":13770},{},[13771,13776],{"type":23,"tag":64,"props":13772,"children":13773},{},[13774],{"type":29,"value":13775},"When a component version is released, its binary files must be built and archived to support subsequent use and management.",{"type":23,"tag":64,"props":13777,"children":13778},{},[13779],{"type":29,"value":13780},"When a test version is released, an HPM package must be built and archived. Additionally, a smoke test is triggered to preliminarily verify that the basic product functions are working correctly.",{"type":23,"tag":4530,"props":13782,"children":13784},{"id":13783},"_2-component-pipeline-design-overview",[13785],{"type":29,"value":13786},"(2) Component Pipeline Design Overview",{"type":23,"tag":37,"props":13788,"children":13789},{},[13790],{"type":23,"tag":129,"props":13791,"children":13793},{"alt":4236,"src":13792},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg05-en.png",[],{"type":23,"tag":37,"props":13795,"children":13796},{},[13797],{"type":29,"value":13798},"When code is merged into the component repository, the component gated check-in pipeline is triggered. The component code is pulled and subjected to checks, including static code analysis, unit tests, and component package verification. The results are sent to the development team, and the gated check-in outcome determines whether the code can be merged.",{"type":23,"tag":37,"props":13800,"children":13801},{},[13802],{"type":23,"tag":129,"props":13803,"children":13805},{"alt":4236,"src":13804},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg06-en.png",[],{"type":23,"tag":37,"props":13807,"children":13808},{},[13809],{"type":29,"value":13810},"When a component version is ready for release, the component build pipeline is triggered either periodically or manually. The component code is pulled for version building, and the resulting version is released in the Conan repository to enable component updates and sharing.",{"type":23,"tag":4530,"props":13812,"children":13814},{"id":13813},"_3-product-pipeline-design-overview",[13815],{"type":29,"value":13816},"(3) Product Pipeline Design Overview",{"type":23,"tag":37,"props":13818,"children":13819},{},[13820],{"type":23,"tag":129,"props":13821,"children":13823},{"alt":4236,"src":13822},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg07-en.png",[],{"type":23,"tag":37,"props":13825,"children":13826},{},[13827],{"type":29,"value":13828},"When code is merged into the Manifest repository, the product gated check-in pipeline is triggered. It pulls the component code, verifies whether the code can be merged, and checks the packaging conditions to ensure that a complete package can be generated. Subsequently, a signature request can be triggered to ensure product security.",{"type":23,"tag":37,"props":13830,"children":13831},{},[13832],{"type":23,"tag":129,"props":13833,"children":13835},{"alt":4236,"src":13834},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg08-en.png",[],{"type":23,"tag":37,"props":13837,"children":13838},{},[13839],{"type":29,"value":13840},"When a product version is released, the product build pipeline is triggered either periodically or manually. It pulls the component code, builds and releases the version, and performs smoke tests to verify product performance and functionality.",{"type":23,"tag":4530,"props":13842,"children":13844},{"id":13843},"_4-simulation-of-pipelines-in-software-development",[13845],{"type":29,"value":13846},"(4) Simulation of Pipelines in Software Development",{"type":23,"tag":37,"props":13848,"children":13849},{},[13850],{"type":29,"value":13851},"To illustrate the functions and mechanisms of the four pipelines, this blog uses arrows to represent each pipeline type, simulating the build and release processes for three components (A, B, and C) and their associated products. Specifically, the blue downward arrow represents the gated check-in pipeline, the cyan rightward arrow represents the build pipeline, the arrow with black border represents the component pipeline, and the arrow with red border represents the product pipeline.",{"type":23,"tag":37,"props":13853,"children":13854},{},[13855],{"type":23,"tag":129,"props":13856,"children":13858},{"alt":4236,"src":13857},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg09-en.png",[],{"type":23,"tag":37,"props":13860,"children":13861},{},[13862],{"type":29,"value":13863},"As shown in the preceding figure, the pipeline design closely aligns with the software engineering process.",{"type":23,"tag":60,"props":13865,"children":13866},{},[13867,13877,13887,13897],{"type":23,"tag":64,"props":13868,"children":13869},{},[13870,13875],{"type":23,"tag":4453,"props":13871,"children":13872},{},[13873],{"type":29,"value":13874},"Version release after multiple iterations of feature integration",{"type":29,"value":13876},": For both components and products, a version is released through a build pipeline after passing several gates.",{"type":23,"tag":64,"props":13878,"children":13879},{},[13880,13885],{"type":23,"tag":4453,"props":13881,"children":13882},{},[13883],{"type":29,"value":13884},"Assurance of versions built from the product repository",{"type":29,"value":13886},": The product gated check-in pipeline succeeds only after the components have been released through the build pipeline and the changes have been merged into the Manifest repository. If the components are not built, the product gated check-in pipeline will fail and an error is reported indicating the missing components.",{"type":23,"tag":64,"props":13888,"children":13889},{},[13890,13895],{"type":23,"tag":4453,"props":13891,"children":13892},{},[13893],{"type":29,"value":13894},"Update of multiple component dependencies",{"type":29,"value":13896},": When a requirement involves several component dependencies, their version updates can be incorporated in a single merge request.",{"type":23,"tag":64,"props":13898,"children":13899},{},[13900,13905],{"type":23,"tag":4453,"props":13901,"children":13902},{},[13903],{"type":29,"value":13904},"Separation between product and component version releases",{"type":29,"value":13906},": After a component version is released through the build pipeline, it does not need to be immediately merged into the product repository. Instead, the version can be released and aligned according to the respective development pace of the component and the product.",{"type":23,"tag":37,"props":13908,"children":13909},{},[13910],{"type":29,"value":13911},"The component gated check-in pipeline, product gated check-in pipeline, component build pipeline, and product build pipeline work together to ensure the quality and efficiency of software development. The gated check-in pipelines strictly control code merging, while the build pipelines handle building and releasing versions. Together, they ensure that software development proceeds smoothly in accordance with the defined processes and standards.",{"type":23,"tag":4161,"props":13913,"children":13915},{"id":13914},"_5-scenario-specific-solutions",[13916],{"type":29,"value":13917},"5 Scenario-specific Solutions",{"type":23,"tag":37,"props":13919,"children":13920},{},[13921],{"type":29,"value":13922},"Deployment scenario: An enterprise builds a Conan repository and plans to migrate Conan binary files from the community repository to its own development environment.",{"type":23,"tag":37,"props":13924,"children":13925},{},[13926],{"type":23,"tag":129,"props":13927,"children":13929},{"alt":4236,"src":13928},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg10-en.png",[],{"type":23,"tag":37,"props":13931,"children":13932},{},[13933],{"type":23,"tag":129,"props":13934,"children":13937},{"alt":4236,"src":13935,"title":13936},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg11-en.png","Repository data update in solution 1",[],{"type":23,"tag":37,"props":13939,"children":13940},{},[13941],{"type":29,"value":13942},"Solution 1: Establish a connection between the community Conan repository and the enterprise's local Conan repository using repository cascading. Theoretically, all binary files can be downloaded from the community repository. This approach works in scenarios where real-time communication with the community repository is possible. While the process is straightforward, it may be impacted by network stability and permission controls.",{"type":23,"tag":37,"props":13944,"children":13945},{},[13946],{"type":23,"tag":129,"props":13947,"children":13950},{"alt":4236,"src":13948,"title":13949},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg12-en.png","Repository data update in solution 2",[],{"type":23,"tag":37,"props":13952,"children":13953},{},[13954],{"type":29,"value":13955},"Solution 2: Run Conan download to download the files and upload them to the enterprise's local Conan repository. Theoretically, all binary files can be downloaded from the community repository.",{"type":23,"tag":37,"props":13957,"children":13958},{},[13959],{"type":23,"tag":129,"props":13960,"children":13963},{"alt":4236,"src":13961,"title":13962},"\u002Fcategory\u002Fblog\u002F20250726\u002Fimg13-en.png","Repository data update in solution 3",[],{"type":23,"tag":37,"props":13965,"children":13966},{},[13967],{"type":29,"value":13968},"Solution 3: Use bingo to download the files and upload them to the local Conan repository. In this approach, only the binary files required by a specific component or product version can be downloaded, limiting access to all other binaries in the community. However, this approach is practical for handling specific dependencies.",{"type":23,"tag":37,"props":13970,"children":13971},{},[13972],{"type":29,"value":13973},"In short, if you have access to the official Conan repository of the openUBMC community, choose Solution 1 for cascading. For offline deployment, opt for Solution 2. If you only need to package the binary files required by a specific component or product, go with Solution 3.",{"type":23,"tag":4161,"props":13975,"children":13977},{"id":13976},"_6-summary",[13978],{"type":29,"value":13979},"6 Summary",{"type":23,"tag":37,"props":13981,"children":13982},{},[13983],{"type":29,"value":13984},"The openUBMC-based developer build and pipeline build practices at Yangtze Computing showcase a comprehensive and systematic build process. Developers within the openUBMC community have drawn significant inspiration from well-structured infrastructure configuration, seamless developer build implementation, a well-designed pipeline build, and efficient approaches to Conan's remote-local deployment. Throughout the development process, developers can leverage this experience and project-specific insights to continually optimize the build system, enhance development efficiency, and maintain high software quality. As a result, developers are better positioned to succeed in the competitive market, speed up software delivery and iteration, and better address user needs and market demands.",{"title":9,"searchDepth":392,"depth":392,"links":13986},[13987,13988,13992,13993,13999,14000],{"id":32,"depth":364,"text":35},{"id":13636,"depth":364,"text":13639,"children":13989},[13990,13991],{"id":13642,"depth":379,"text":13645},{"id":13666,"depth":379,"text":13669},{"id":13684,"depth":364,"text":13687},{"id":13718,"depth":364,"text":13721,"children":13994},[13995,13996,13997,13998],{"id":13724,"depth":379,"text":13727},{"id":13783,"depth":379,"text":13786},{"id":13813,"depth":379,"text":13816},{"id":13843,"depth":379,"text":13846},{"id":13914,"depth":364,"text":13917},{"id":13976,"depth":364,"text":13979},"content:en:blogs:20250726.md","en\u002Fblogs\u002F20250726.md","en\u002Fblogs\u002F20250726","Business Practice | How the openUBMC Community Development Pipeline Drives High-Quality Delivery for Yangtze Computing Introduction In software development, the build phase is critical because it directly impacts development efficiency and software quality. To support local deployment of openUBMC and improve development efficiency within the enterprise, Yangtze Computing has introduced a developer build solution and a pipeline build solution. The offline deployment–based solutions cover infrastructure configuration and build system design, helping gain a deep understanding of how to construct and optimize the openUBMC build system. Infrastructure Configuration (1) Infrastructure and Resource Update Overview  Like many companies, Yangtze Computing conducts most of its development in a pure intranet environment. A key challenge is making community infrastructure compatible with the enterprise's internal systems. To address this, Yangtze Computing has designed a technical solution that deploys openUBMC community resources through unidirectional data flows. Data moves from the Internet to the non-confidential intranet and then to the confidential intranet. This network design ensures both data security and development environment stability. Due to security requirements, additional deployment procedures have been introduced. To improve efficiency, automation is essential. Therefore, in Yangtze Computing's deployment process, the cross-network transfer of source code and Conan is fully automated via scripting. (2) Infrastructure Configuration  The infrastructure Yangtze Computing sets up for the localized openUBMC deployment is complete, user-friendly, and secure. It provides strong technical support for their commercial release of openUBMC and helps streamline the BMC software development process. It also provides guidance for other enterprise developers building similar development environments and workflows. 3 Developer Build Solution  Docker images form the foundation for both manual developer builds and automated pipeline builds. Uploading Docker images to a compile server allows developers to directly build services. Uploading Docker images to a container image repository enables pipelines to build services automatically. On a compile server, an independent compile container is created for each developer. This design isolates each developer's environment to prevent cross-interference. Developers can connect to the compile containers through SSH and carry out development. In practice, they can use pre-configured compile containers in a secure desktop environment, allowing them to focus on coding and debugging without worrying about environment setup. In addition, Yangtze Computing's compile containers support personal data persistence and include a read-only public directory. This design simplifies upgrades to the compilation environment and the transfer of development materials during maintenance. 4 Pipeline Build Solution (1) Pipeline Requirement Analysis  Code gated check-in requirements: Component gated check-in pipeline : When component code is merged, the gated check-in pipeline is triggered, performing static code analysis, unit tests, and unit test coverage calculation. Code can be successfully merged only after passing these checks, ensuring high code quality. Product gated check-in pipeline : When a product version changes due to component updates, a gated check-in is performed to verify that the product package can be built, ensuring the integrity and availability of the product version. Version build and release requirements: When a component version is released, its binary files must be built and archived to support subsequent use and management. When a test version is released, an HPM package must be built and archived. Additionally, a smoke test is triggered to preliminarily verify that the basic product functions are working correctly. (2) Component Pipeline Design Overview  When code is merged into the component repository, the component gated check-in pipeline is triggered. The component code is pulled and subjected to checks, including static code analysis, unit tests, and component package verification. The results are sent to the development team, and the gated check-in outcome determines whether the code can be merged.  When a component version is ready for release, the component build pipeline is triggered either periodically or manually. The component code is pulled for version building, and the resulting version is released in the Conan repository to enable component updates and sharing. (3) Product Pipeline Design Overview  When code is merged into the Manifest repository, the product gated check-in pipeline is triggered. It pulls the component code, verifies whether the code can be merged, and checks the packaging conditions to ensure that a complete package can be generated. Subsequently, a signature request can be triggered to ensure product security.  When a product version is released, the product build pipeline is triggered either periodically or manually. It pulls the component code, builds and releases the version, and performs smoke tests to verify product performance and functionality. (4) Simulation of Pipelines in Software Development To illustrate the functions and mechanisms of the four pipelines, this blog uses arrows to represent each pipeline type, simulating the build and release processes for three components (A, B, and C) and their associated products. Specifically, the blue downward arrow represents the gated check-in pipeline, the cyan rightward arrow represents the build pipeline, the arrow with black border represents the component pipeline, and the arrow with red border represents the product pipeline.  As shown in the preceding figure, the pipeline design closely aligns with the software engineering process. Version release after multiple iterations of feature integration : For both components and products, a version is released through a build pipeline after passing several gates. Assurance of versions built from the product repository : The product gated check-in pipeline succeeds only after the components have been released through the build pipeline and the changes have been merged into the Manifest repository. If the components are not built, the product gated check-in pipeline will fail and an error is reported indicating the missing components. Update of multiple component dependencies : When a requirement involves several component dependencies, their version updates can be incorporated in a single merge request. Separation between product and component version releases : After a component version is released through the build pipeline, it does not need to be immediately merged into the product repository. Instead, the version can be released and aligned according to the respective development pace of the component and the product. The component gated check-in pipeline, product gated check-in pipeline, component build pipeline, and product build pipeline work together to ensure the quality and efficiency of software development. The gated check-in pipelines strictly control code merging, while the build pipelines handle building and releasing versions. Together, they ensure that software development proceeds smoothly in accordance with the defined processes and standards. 5 Scenario-specific Solutions Deployment scenario: An enterprise builds a Conan repository and plans to migrate Conan binary files from the community repository to its own development environment.   Solution 1: Establish a connection between the community Conan repository and the enterprise's local Conan repository using repository cascading. Theoretically, all binary files can be downloaded from the community repository. This approach works in scenarios where real-time communication with the community repository is possible. While the process is straightforward, it may be impacted by network stability and permission controls.  Solution 2: Run Conan download to download the files and upload them to the enterprise's local Conan repository. Theoretically, all binary files can be downloaded from the community repository.  Solution 3: Use bingo to download the files and upload them to the local Conan repository. In this approach, only the binary files required by a specific component or product version can be downloaded, limiting access to all other binaries in the community. However, this approach is practical for handling specific dependencies. In short, if you have access to the official Conan repository of the openUBMC community, choose Solution 1 for cascading. For offline deployment, opt for Solution 2. If you only need to package the binary files required by a specific component or product, go with Solution 3. 6 Summary The openUBMC-based developer build and pipeline build practices at Yangtze Computing showcase a comprehensive and systematic build process. Developers within the openUBMC community have drawn significant inspiration from well-structured infrastructure configuration, seamless developer build implementation, a well-designed pipeline build, and efficient approaches to Conan's remote-local deployment. Throughout the development process, developers can leverage this experience and project-specific insights to continually optimize the build system, enhance development efficiency, and maintain high software quality. As a result, developers are better positioned to succeed in the competitive market, speed up software delivery and iteration, and better address user needs and market demands.",[13617],[14007,14313,14481,14680,14917,15166],{"_path":14008,"_dir":14009,"_draft":8,"_partial":8,"_locale":9,"title":14010,"description":14011,"date":14012,"category":14009,"location":14013,"body":14014,"_type":4181,"_id":14308,"_source":4183,"_file":14309,"_stem":14310,"_extension":4186,"plainText":14311,"authorNames":14312},"\u002Fen\u002Fnews\u002F2509-release","news","openUBMC 25.09 Is Now Available!","A huge thank you to all the developers and organizations who contributed to this release—openUBMC 25.09 is here, right on schedule!","2025\u002F09\u002F30","openUBMC小助手",{"type":20,"children":14015,"toc":14296},[14016,14021,14026,14030,14050,14056,14062,14072,14078,14103,14109,14159,14165,14175,14181,14206,14212,14222,14228,14238,14244,14291],{"type":23,"tag":24,"props":14017,"children":14019},{"id":14018},"openubmc-2509-is-now-available",[14020],{"type":29,"value":14010},{"type":23,"tag":24,"props":14022,"children":14023},{"id":14018},[14024],{"type":29,"value":14025},"🥳 openUBMC 25.09 Is Now Available!",{"type":23,"tag":37,"props":14027,"children":14028},{},[14029],{"type":29,"value":14011},{"type":23,"tag":37,"props":14031,"children":14032},{},[14033,14035,14038,14040,14043,14045,14048],{"type":29,"value":14034},"✅ 1,313 issues resolved",{"type":23,"tag":5984,"props":14036,"children":14037},{},[],{"type":29,"value":14039},"\n✅ 1,923 PRs merged",{"type":23,"tag":5984,"props":14041,"children":14042},{},[],{"type":29,"value":14044},"\n✅ 565k new lines of code",{"type":23,"tag":5984,"props":14046,"children":14047},{},[],{"type":29,"value":14049},"\n✅ Contributions from developers across 17 organizations",{"type":23,"tag":4161,"props":14051,"children":14053},{"id":14052},"whats-new-in-2509",[14054],{"type":29,"value":14055},"🔹 What's New in 25.09",{"type":23,"tag":4530,"props":14057,"children":14059},{"id":14058},"security-sig",[14060],{"type":29,"value":14061},"Security SIG",{"type":23,"tag":37,"props":14063,"children":14064},{},[14065,14067,14070],{"type":29,"value":14066},"🆕 Added support for historical password reuse prevention, configurable failed login lockouts, and extended password lengths.",{"type":23,"tag":5984,"props":14068,"children":14069},{},[],{"type":29,"value":14071},"\n🆕 Added support for web SSO login, IPMI channel permission control, and frontend sensitive data encryption.",{"type":23,"tag":4530,"props":14073,"children":14075},{"id":14074},"interface-sig",[14076],{"type":29,"value":14077},"Interface SIG",{"type":23,"tag":37,"props":14079,"children":14080},{},[14081,14083,14086,14088,14091,14093,14096,14098,14101],{"type":29,"value":14082},"🆕 Added openUBMC plugins for Zabbix, Ansible, Cmdlets, and Nagios.",{"type":23,"tag":5984,"props":14084,"children":14085},{},[],{"type":29,"value":14087},"\n🚀 Completed resource management interfaces for Redfish Manager, Processor, SEL, NTP, and timezone.",{"type":23,"tag":5984,"props":14089,"children":14090},{},[],{"type":29,"value":14092},"\n🆕 Added support for User Access\u002FPassword, User Name, and DCMI Power commands.",{"type":23,"tag":5984,"props":14094,"children":14095},{},[],{"type":29,"value":14097},"\n🚀 Upgraded multiple firmware in a single HPM package, with auto-recovery upon BMC upgrade failure.",{"type":23,"tag":5984,"props":14099,"children":14100},{},[],{"type":29,"value":14102},"\n🚀 Prevented host power-on during VRM and NPU upgrades.",{"type":23,"tag":4530,"props":14104,"children":14106},{"id":14105},"hardware-sig",[14107],{"type":29,"value":14108},"Hardware SIG",{"type":23,"tag":37,"props":14110,"children":14111},{},[14112,14114,14117,14119,14122,14124,14127,14129,14132,14134,14137,14139,14142,14144,14147,14149,14152,14154,14157],{"type":29,"value":14113},"🆕 Added support for I3C\u002FCAN-FD and network controller information retrieval via NC-SI over MCTP over I2C\u002FSMBus.",{"type":23,"tag":5984,"props":14115,"children":14116},{},[],{"type":29,"value":14118},"\n🆕 Added support for Emulex PLDM OEM protocol.",{"type":23,"tag":5984,"props":14120,"children":14121},{},[],{"type":29,"value":14123},"\n🆕 Added support for PCIe and OCP cards such as E810XXVDA2G1P5, E810CQDA2G2P5, and MCX755106AS-HEAT.",{"type":23,"tag":5984,"props":14125,"children":14126},{},[],{"type":29,"value":14128},"\n🆕 Added support for RAID cards (SP686C-M series), drives, NVMe SSDs (Samsung PM9D3A, Memblaze PBlaze7, and Solidigm D7-PS1010).",{"type":23,"tag":5984,"props":14130,"children":14131},{},[],{"type":29,"value":14133},"\n🆕 Added support for GPU (NVIDIA A6000) and NPU modules.",{"type":23,"tag":5984,"props":14135,"children":14136},{},[],{"type":29,"value":14138},"\n🆕 Added support for TPSU\u002FPSU management capabilities, such as module information query, turbo capacitor management, dual CAN power redundancy, power capping & monitoring, and output limit configuration.",{"type":23,"tag":5984,"props":14140,"children":14141},{},[],{"type":29,"value":14143},"\n🚀 Added support for persistent critical component logs (VRM\u002Fpower).",{"type":23,"tag":5984,"props":14145,"children":14146},{},[],{"type":29,"value":14148},"\n🚀 Added support for BIOS firmware export & critical component firmware upgrade.",{"type":23,"tag":5984,"props":14150,"children":14151},{},[],{"type":29,"value":14153},"\n🚀 Added support for NIC flash recovery, optical module key info logging & link failure detection.",{"type":23,"tag":5984,"props":14155,"children":14156},{},[],{"type":29,"value":14158},"\n🚀 Added support for high-speed link detection, CPU & peripheral link anomaly alerts.",{"type":23,"tag":4530,"props":14160,"children":14162},{"id":14161},"component-driver-sig",[14163],{"type":29,"value":14164},"Component Driver SIG",{"type":23,"tag":37,"props":14166,"children":14167},{},[14168,14170,14173],{"type":29,"value":14169},"🆕 Added a new device driver management framework to support driver-based component adaptation and management.",{"type":23,"tag":5984,"props":14171,"children":14172},{},[],{"type":29,"value":14174},"\n🚀 Enabled driver-based management for components such as AWM M11P, SP670, and RP1000P2SFP-A03.",{"type":23,"tag":4530,"props":14176,"children":14178},{"id":14177},"cicd-sig",[14179],{"type":29,"value":14180},"CICD SIG",{"type":23,"tag":37,"props":14182,"children":14183},{},[14184,14186,14189,14191,14194,14196,14199,14201,14204],{"type":29,"value":14185},"🚀 Enhanced QEMU simulation with support for complex protocol emulation (SMBus, MCTP) and device emulation (MCUs, PCIe, and IMU sensors).",{"type":23,"tag":5984,"props":14187,"children":14188},{},[],{"type":29,"value":14190},"\n🚀 Optimized QEMU smoke tests & driver dependency synchronization with OS updates.",{"type":23,"tag":5984,"props":14192,"children":14193},{},[],{"type":29,"value":14195},"\n🆕 Built Conan 2.0 main repo, support for profile configuration & parallel builds.",{"type":23,"tag":5984,"props":14197,"children":14198},{},[],{"type":29,"value":14200},"\n🚀 Bingo integrated GoogleTest framework and optimized developer test hardening & CI automated tests.",{"type":23,"tag":5984,"props":14202,"children":14203},{},[],{"type":29,"value":14205},"\n🆕 Added I2C scan & read\u002Fwrite tools, configurable metrics collection & observability tracing.",{"type":23,"tag":4530,"props":14207,"children":14209},{"id":14208},"docs-sig",[14210],{"type":29,"value":14211},"Docs SIG",{"type":23,"tag":37,"props":14213,"children":14214},{},[14215,14217,14220],{"type":29,"value":14216},"🆕 Added configuration guides for SNMP interface mapper, TRAP alerts, equipment customization, and CLI mapper.",{"type":23,"tag":5984,"props":14218,"children":14219},{},[],{"type":29,"value":14221},"\n🚀 Updated BMC Studio user guide & online help pages.",{"type":23,"tag":4530,"props":14223,"children":14225},{"id":14224},"infra-sig",[14226],{"type":29,"value":14227},"Infra SIG",{"type":23,"tag":37,"props":14229,"children":14230},{},[14231,14233,14236],{"type":29,"value":14232},"🆕 Added community contribution dashboard for statistics on individual contributions, CLA-signed organization contributions, and SIG contribution rankings.",{"type":23,"tag":5984,"props":14234,"children":14235},{},[],{"type":29,"value":14237},"\n🆕 Added support for creating routine meetings and improved recording features including speech-to-text transcription and screen recording.",{"type":23,"tag":4530,"props":14239,"children":14241},{"id":14240},"resources",[14242],{"type":29,"value":14243},"🔹 Resources",{"type":23,"tag":60,"props":14245,"children":14246},{},[14247,14258,14269,14280],{"type":23,"tag":64,"props":14248,"children":14249},{},[14250,14252],{"type":29,"value":14251},"Download: ",{"type":23,"tag":43,"props":14253,"children":14256},{"href":14254,"rel":14255},"https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fdownload",[47],[14257],{"type":29,"value":14254},{"type":23,"tag":64,"props":14259,"children":14260},{},[14261,14263],{"type":29,"value":14262},"Release notes: ",{"type":23,"tag":43,"props":14264,"children":14267},{"href":14265,"rel":14266},"https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fversion\u002Flatest",[47],[14268],{"type":29,"value":14265},{"type":23,"tag":64,"props":14270,"children":14271},{},[14272,14274],{"type":29,"value":14273},"Marketplace: ",{"type":23,"tag":43,"props":14275,"children":14278},{"href":14276,"rel":14277},"https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fmarketplace",[47],[14279],{"type":29,"value":14276},{"type":23,"tag":64,"props":14281,"children":14282},{},[14283,14285],{"type":29,"value":14284},"Installation docs: ",{"type":23,"tag":43,"props":14286,"children":14289},{"href":14287,"rel":14288},"https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fdocs",[47],[14290],{"type":29,"value":14287},{"type":23,"tag":37,"props":14292,"children":14293},{},[14294],{"type":29,"value":14295},"A big shoutout to every developer—your contributions are what keep openUBMC moving forward. 💪\nStay tuned and join us to continue driving our community's growth! 🚀",{"title":9,"searchDepth":392,"depth":392,"links":14297},[14298],{"id":14052,"depth":364,"text":14055,"children":14299},[14300,14301,14302,14303,14304,14305,14306,14307],{"id":14058,"depth":379,"text":14061},{"id":14074,"depth":379,"text":14077},{"id":14105,"depth":379,"text":14108},{"id":14161,"depth":379,"text":14164},{"id":14177,"depth":379,"text":14180},{"id":14208,"depth":379,"text":14211},{"id":14224,"depth":379,"text":14227},{"id":14240,"depth":379,"text":14243},"content:en:news:2509-release.md","en\u002Fnews\u002F2509-release.md","en\u002Fnews\u002F2509-release","openUBMC 25.09 Is Now Available! 🥳 openUBMC 25.09 Is Now Available! A huge thank you to all the developers and organizations who contributed to this release—openUBMC 25.09 is here, right on schedule! ✅ 1,313 issues resolved  \n✅ 1,923 PRs merged  \n✅ 565k new lines of code  \n✅ Contributions from developers across 17 organizations 🔹 What's New in 25.09 Security SIG 🆕 Added support for historical password reuse prevention, configurable failed login lockouts, and extended password lengths.  \n🆕 Added support for web SSO login, IPMI channel permission control, and frontend sensitive data encryption. Interface SIG 🆕 Added openUBMC plugins for Zabbix, Ansible, Cmdlets, and Nagios.  \n🚀 Completed resource management interfaces for Redfish Manager, Processor, SEL, NTP, and timezone.  \n🆕 Added support for User Access\u002FPassword, User Name, and DCMI Power commands.  \n🚀 Upgraded multiple firmware in a single HPM package, with auto-recovery upon BMC upgrade failure.  \n🚀 Prevented host power-on during VRM and NPU upgrades. Hardware SIG 🆕 Added support for I3C\u002FCAN-FD and network controller information retrieval via NC-SI over MCTP over I2C\u002FSMBus.  \n🆕 Added support for Emulex PLDM OEM protocol.  \n🆕 Added support for PCIe and OCP cards such as E810XXVDA2G1P5, E810CQDA2G2P5, and MCX755106AS-HEAT.  \n🆕 Added support for RAID cards (SP686C-M series), drives, NVMe SSDs (Samsung PM9D3A, Memblaze PBlaze7, and Solidigm D7-PS1010).  \n🆕 Added support for GPU (NVIDIA A6000) and NPU modules.  \n🆕 Added support for TPSU\u002FPSU management capabilities, such as module information query, turbo capacitor management, dual CAN power redundancy, power capping & monitoring, and output limit configuration.  \n🚀 Added support for persistent critical component logs (VRM\u002Fpower).  \n🚀 Added support for BIOS firmware export & critical component firmware upgrade.  \n🚀 Added support for NIC flash recovery, optical module key info logging & link failure detection.  \n🚀 Added support for high-speed link detection, CPU & peripheral link anomaly alerts. Component Driver SIG 🆕 Added a new device driver management framework to support driver-based component adaptation and management.  \n🚀 Enabled driver-based management for components such as AWM M11P, SP670, and RP1000P2SFP-A03. CICD SIG 🚀 Enhanced QEMU simulation with support for complex protocol emulation (SMBus, MCTP) and device emulation (MCUs, PCIe, and IMU sensors).  \n🚀 Optimized QEMU smoke tests & driver dependency synchronization with OS updates.  \n🆕 Built Conan 2.0 main repo, support for profile configuration & parallel builds.  \n🚀 Bingo integrated GoogleTest framework and optimized developer test hardening & CI automated tests.  \n🆕 Added I2C scan & read\u002Fwrite tools, configurable metrics collection & observability tracing. Docs SIG 🆕 Added configuration guides for SNMP interface mapper, TRAP alerts, equipment customization, and CLI mapper.  \n🚀 Updated BMC Studio user guide & online help pages. Infra SIG 🆕 Added community contribution dashboard for statistics on individual contributions, CLA-signed organization contributions, and SIG contribution rankings.  \n🆕 Added support for creating routine meetings and improved recording features including speech-to-text transcription and screen recording. 🔹 Resources Download:  https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fdownload Release notes:  https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fversion\u002Flatest Marketplace:  https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fmarketplace Installation docs:  https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fdocs A big shoutout to every developer—your contributions are what keep openUBMC moving forward. 💪\nStay tuned and join us to continue driving our community's growth! 🚀",[],{"_path":14314,"_dir":14009,"_draft":8,"_partial":8,"_locale":9,"title":14315,"description":14316,"date":14317,"category":14318,"location":14013,"body":14319,"_type":4181,"_id":14476,"_source":4183,"_file":14477,"_stem":14478,"_extension":4186,"coverImage":14404,"plainText":14479,"authorNames":14480},"\u002Fen\u002Fnews\u002Fxian-meetup-review","openUBMC Xi'an Meetup Recap","On August 18, the openUBMC Xi'an Meetup, co-hosted by KunlunTech, wrapped up successfully, bringing together nearly 30 developers from various companies. This meetup centered on openUBMC 25.06, offering hands-on workshops across . Developers dove into real-world scenarios, exchanged ideas, and gained a deeper grasp of the technologies driving openUBMC forward.","2025\u002F08\u002F22","events",{"type":20,"children":14320,"toc":14467},[14321,14326,14338,14343,14349,14359,14363,14369,14379,14383,14389,14399,14406,14412,14422,14426,14432,14437,14443],{"type":23,"tag":24,"props":14322,"children":14324},{"id":14323},"openubmc-xian-meetup-recap",[14325],{"type":29,"value":14315},{"type":23,"tag":37,"props":14327,"children":14328},{},[14329,14331,14336],{"type":29,"value":14330},"On August 18, the openUBMC Xi'an Meetup, co-hosted by KunlunTech, wrapped up successfully, bringing together nearly 30 developers from various companies. This meetup centered on openUBMC 25.06, offering hands-on workshops across ",{"type":23,"tag":4453,"props":14332,"children":14333},{},[14334],{"type":29,"value":14335},"observability practices, community testing capabilities, and software development enhancements",{"type":29,"value":14337},". Developers dove into real-world scenarios, exchanged ideas, and gained a deeper grasp of the technologies driving openUBMC forward.",{"type":23,"tag":14339,"props":14340,"children":14342},"prose-img-list",{"list":14341},"\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg01.webp,\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg02.webp,\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg03.webp,\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg04.webp,\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg05.webp",[],{"type":23,"tag":4161,"props":14344,"children":14346},{"id":14345},"openubmc-community-updates",[14347],{"type":29,"value":14348},"openUBMC Community Updates",{"type":23,"tag":37,"props":14350,"children":14351},{},[14352,14357],{"type":23,"tag":4453,"props":14353,"children":14354},{},[14355],{"type":29,"value":14356},"Zhang Yubo, a member of the openUBMC Technical Committee, kicked off the event with updates on the community's latest progress and its organizational and operational mechanisms",{"type":29,"value":14358},". Highlights from the 25.06 release, especially its stronger traceability and user-friendly tools, drew great interest, and the sneak peek at 25.09 fueled excitement for what's next. His talk also shed light on openUBMC's open and transparent governance, inspiring more developers to get involved.",{"type":23,"tag":14339,"props":14360,"children":14362},{"list":14361},"\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg06.webp,\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg07.webp",[],{"type":23,"tag":4161,"props":14364,"children":14366},{"id":14365},"observability-practice",[14367],{"type":29,"value":14368},"Observability Practice",{"type":23,"tag":37,"props":14370,"children":14371},{},[14372,14377],{"type":23,"tag":4453,"props":14373,"children":14374},{},[14375],{"type":29,"value":14376},"Li Siguang from the openUBMC Interface SIG delivered an in-depth session on observability, covering everything from technical principles to real-world applications",{"type":29,"value":14378},". The workshop illustrated how effective data collection, metrics, and log analysis enhance visibility across BMC software.",{"type":23,"tag":14339,"props":14380,"children":14382},{"list":14381},"\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg08.webp,\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg09.webp",[],{"type":23,"tag":4161,"props":14384,"children":14386},{"id":14385},"community-testing-capability-enhancement",[14387],{"type":29,"value":14388},"Community Testing Capability Enhancement",{"type":23,"tag":37,"props":14390,"children":14391},{},[14392,14397],{"type":23,"tag":4453,"props":14393,"children":14394},{},[14395],{"type":29,"value":14396},"Representing the CICD SIG, Zhang Yubo and Lin Wanmin introduced the smoke testing implemented in openUBMC 25.06, built on Robot Framework and QEMU",{"type":29,"value":14398},". Lin demonstrated how to develop BMC northbound interface test cases using Robot Framework, showing the efficiency and ease of automated testing.",{"type":23,"tag":37,"props":14400,"children":14401},{},[14402],{"type":23,"tag":129,"props":14403,"children":14405},{"alt":4236,"src":14404},"\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg10.webp",[],{"type":23,"tag":4161,"props":14407,"children":14409},{"id":14408},"ai-powered-coding-practice",[14410],{"type":29,"value":14411},"AI-Powered Coding Practice",{"type":23,"tag":37,"props":14413,"children":14414},{},[14415,14420],{"type":23,"tag":4453,"props":14416,"children":14417},{},[14418],{"type":29,"value":14419},"Zhang Yubo and Li Zhaotian illustrated community feature design workflows, coding strategies, and test case design processes through real openUBMC cases across design, coding, and testing phases",{"type":29,"value":14421},". Li showcased how AI toolchains can auto-generate design documents, test cases, and DT code, offering developers new ways to boost productivity. They encouraged participants to further experiment with AI-assisted development and contribute innovative ideas to the community.",{"type":23,"tag":14339,"props":14423,"children":14425},{"list":14424},"\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg11.webp,\u002Fcategory\u002Fnews\u002Fxian-meetup-review\u002Fimg12.webp",[],{"type":23,"tag":4161,"props":14427,"children":14429},{"id":14428},"see-you-at-the-next-openubmc-meetup",[14430],{"type":29,"value":14431},"🚩  See You at the Next openUBMC Meetup!",{"type":23,"tag":37,"props":14433,"children":14434},{},[14435],{"type":29,"value":14436},"Innovation never stops—and neither does openUBMC. The community will continue bringing cutting-edge technologies and practical workshops to more cities, empowering developers everywhere. openUBMC remains committed to building a thriving, collaborative ecosystem where every developer can grow, contribute, and make an impact.",{"type":23,"tag":4530,"props":14438,"children":14440},{"id":14439},"learn-more-about-openubmc-️",[14441],{"type":29,"value":14442},"Learn More about openUBMC ⬇️",{"type":23,"tag":60,"props":14444,"children":14445},{},[14446,14457],{"type":23,"tag":64,"props":14447,"children":14448},{},[14449,14451],{"type":29,"value":14450},"Official website: ",{"type":23,"tag":43,"props":14452,"children":14455},{"href":14453,"rel":14454},"https:\u002F\u002Fwww.openubmc.cn\u002Fen",[47],[14456],{"type":29,"value":14453},{"type":23,"tag":64,"props":14458,"children":14459},{},[14460,14461],{"type":29,"value":13232},{"type":23,"tag":43,"props":14462,"children":14465},{"href":14463,"rel":14464},"https:\u002F\u002Fdiscuss.openubmc.cn\u002F",[47],[14466],{"type":29,"value":14463},{"title":9,"searchDepth":392,"depth":392,"links":14468},[14469,14470,14471,14472,14473],{"id":14345,"depth":364,"text":14348},{"id":14365,"depth":364,"text":14368},{"id":14385,"depth":364,"text":14388},{"id":14408,"depth":364,"text":14411},{"id":14428,"depth":364,"text":14431,"children":14474},[14475],{"id":14439,"depth":379,"text":14442},"content:en:news:xian-meetup-review.md","en\u002Fnews\u002Fxian-meetup-review.md","en\u002Fnews\u002Fxian-meetup-review","openUBMC Xi'an Meetup Recap On August 18, the openUBMC Xi'an Meetup, co-hosted by KunlunTech, wrapped up successfully, bringing together nearly 30 developers from various companies. This meetup centered on openUBMC 25.06, offering hands-on workshops across  observability practices, community testing capabilities, and software development enhancements . Developers dove into real-world scenarios, exchanged ideas, and gained a deeper grasp of the technologies driving openUBMC forward.  openUBMC Community Updates Zhang Yubo, a member of the openUBMC Technical Committee, kicked off the event with updates on the community's latest progress and its organizational and operational mechanisms . Highlights from the 25.06 release, especially its stronger traceability and user-friendly tools, drew great interest, and the sneak peek at 25.09 fueled excitement for what's next. His talk also shed light on openUBMC's open and transparent governance, inspiring more developers to get involved.  Observability Practice Li Siguang from the openUBMC Interface SIG delivered an in-depth session on observability, covering everything from technical principles to real-world applications . The workshop illustrated how effective data collection, metrics, and log analysis enhance visibility across BMC software.  Community Testing Capability Enhancement Representing the CICD SIG, Zhang Yubo and Lin Wanmin introduced the smoke testing implemented in openUBMC 25.06, built on Robot Framework and QEMU . Lin demonstrated how to develop BMC northbound interface test cases using Robot Framework, showing the efficiency and ease of automated testing.  AI-Powered Coding Practice Zhang Yubo and Li Zhaotian illustrated community feature design workflows, coding strategies, and test case design processes through real openUBMC cases across design, coding, and testing phases . Li showcased how AI toolchains can auto-generate design documents, test cases, and DT code, offering developers new ways to boost productivity. They encouraged participants to further experiment with AI-assisted development and contribute innovative ideas to the community.  🚩  See You at the Next openUBMC Meetup! Innovation never stops—and neither does openUBMC. The community will continue bringing cutting-edge technologies and practical workshops to more cities, empowering developers everywhere. openUBMC remains committed to building a thriving, collaborative ecosystem where every developer can grow, contribute, and make an impact. Learn More about openUBMC ⬇️ Official website:  https:\u002F\u002Fwww.openubmc.cn\u002Fen Community forum:  https:\u002F\u002Fdiscuss.openubmc.cn\u002F",[],{"_path":14482,"_dir":14009,"_draft":8,"_partial":8,"_locale":9,"title":14483,"description":14484,"date":14485,"category":14318,"location":14013,"body":14486,"_type":4181,"_id":14675,"_source":4183,"_file":14676,"_stem":14677,"_extension":4186,"coverImage":14502,"plainText":14678,"authorNames":14679},"\u002Fen\u002Fnews\u002F20250724","openUBMC Open Source Development Committee Launches Trial Operation with Inaugural Meeting","The openUBMC Open Source Development Committee officially launched its trial operation in Shenzhen, China, on July 18, 2025, marked by its inaugural onsite meeting. This milestone event convened leaders and technical experts from over 30 companies, representing diverse fields including Internet, carriers, server vendors, independent BIOS vendors, component suppliers, and standards organizations.","2025\u002F07\u002F24",{"type":20,"children":14487,"toc":14672},[14488,14493,14497,14504,14509,14516,14521,14528,14533,14562,14567,14610,14617,14622,14629,14634,14640],{"type":23,"tag":24,"props":14489,"children":14491},{"id":14490},"openubmc-open-source-development-committee-launches-trial-operation-with-inaugural-meeting",[14492],{"type":29,"value":14483},{"type":23,"tag":37,"props":14494,"children":14495},{},[14496],{"type":29,"value":14484},{"type":23,"tag":37,"props":14498,"children":14499},{},[14500],{"type":23,"tag":129,"props":14501,"children":14503},{"alt":4236,"src":14502},"\u002Fcategory\u002Fnews\u002F20250724\u002Fimg01.webp",[],{"type":23,"tag":37,"props":14505,"children":14506},{},[14507],{"type":29,"value":14508},"The meeting focused on core topics such as technological innovation, ecosystem co-construction, and community governance, establishing clear goals and strategic directions for openUBMC's next phase of development.",{"type":23,"tag":37,"props":14510,"children":14511},{},[14512],{"type":23,"tag":129,"props":14513,"children":14515},{"alt":4236,"src":14514},"\u002Fcategory\u002Fnews\u002F20250724\u002Fimg02.webp",[],{"type":23,"tag":37,"props":14517,"children":14518},{},[14519],{"type":29,"value":14520},"Mr. Ma Yinchuan, Chairperson of the openUBMC Open Source Development Committee, attended the meeting and delivered a speech. He summarized the progress since openUBMC's initial open-sourcing, expressed gratitude for the contributions of all member organizations, and invited the committee to offer suggestions and ideas for the community's future work, emphasizing the need to build consensus and jointly advance the community's development.",{"type":23,"tag":37,"props":14522,"children":14523},{},[14524],{"type":23,"tag":129,"props":14525,"children":14527},{"alt":4236,"src":14526},"\u002Fcategory\u002Fnews\u002F20250724\u002Fimg03.webp",[],{"type":23,"tag":37,"props":14529,"children":14530},{},[14531],{"type":29,"value":14532},"Following this, Mr. Song Tongling, Chairperson of the openUBMC Technical Committee, addressed the openUBMC Open Source Development Committee on the major technical features of the newly released version 25.06 and the technical roadmap for the second half of the year 2025.",{"type":23,"tag":60,"props":14534,"children":14535},{},[14536,14549],{"type":23,"tag":64,"props":14537,"children":14538},{},[14539,14544,14547],{"type":23,"tag":4453,"props":14540,"children":14541},{},[14542],{"type":29,"value":14543},"Major upgrades in version 25.06",{"type":23,"tag":5984,"props":14545,"children":14546},{},[],{"type":29,"value":14548},"\nAs the second release of openUBMC in 2025, openUBMC 25.06 achieves significant progress. Key improvements include enhanced standardized interfaces, broader hardware compatibility, stronger O&M capabilities, and an optimized developer experience.",{"type":23,"tag":64,"props":14550,"children":14551},{},[14552,14557,14560],{"type":23,"tag":4453,"props":14553,"children":14554},{},[14555],{"type":29,"value":14556},"Technical roadmap for H2 2025",{"type":23,"tag":5984,"props":14558,"children":14559},{},[],{"type":29,"value":14561},"\nIn the second half of 2025, the openUBMC community will focus on optimizing and upgrading core areas: BMC O&M features, developer usability, and community infrastructure. The aim is to create a more user-friendly and efficient BMC software and community ecosystem. Meanwhile, the openUBMC Technical Committee will uphold its commitment to technical work across H2, ensuring a strong foundation for the continuous development of community versions and technologies.",{"type":23,"tag":37,"props":14563,"children":14564},{},[14565],{"type":29,"value":14566},"A sustained, prosperous ecosystem is critical for the growth of any open source community. The openUBMC Ecosystem Development Team provided the openUBMC Open Source Development Committee with an update on the community's progress.",{"type":23,"tag":60,"props":14568,"children":14569},{},[14570,14580,14590,14600],{"type":23,"tag":64,"props":14571,"children":14572},{},[14573,14578],{"type":23,"tag":4453,"props":14574,"children":14575},{},[14576],{"type":29,"value":14577},"Expanding industry ecosystem:",{"type":29,"value":14579}," The openUBMC community has laid the foundation for a robust and comprehensive industry chain. Looking ahead, it will continue to broaden hardware and software support to accommodate a wider range of application scenarios.",{"type":23,"tag":64,"props":14581,"children":14582},{},[14583,14588],{"type":23,"tag":4453,"props":14584,"children":14585},{},[14586],{"type":29,"value":14587},"Enhanced standards and certification system:",{"type":29,"value":14589}," The openUBMC Component Driver SIG will develop specifications for BMC southbound driver interfaces. Collaborating with community members and standards organizations, this SIG aims to establish unified component driver standards and a formal certification system.",{"type":23,"tag":64,"props":14591,"children":14592},{},[14593,14598],{"type":23,"tag":4453,"props":14594,"children":14595},{},[14596],{"type":29,"value":14597},"Impressive initial scale of commercial adoption:",{"type":29,"value":14599}," Nearly 20 commercial versions based on the openUBMC community release have already been delivered by member organizations, spanning critical sectors such as cloud services, finance, and public utilities.",{"type":23,"tag":64,"props":14601,"children":14602},{},[14603,14608],{"type":23,"tag":4453,"props":14604,"children":14605},{},[14606],{"type":29,"value":14607},"Efficient and healthy organizational operations:：",{"type":29,"value":14609}," The openUBMC community has formed nine technical SIGs focused on key areas including northbound interface management, southbound component integration, BMC O&M, and component drivers. These SIGs have attracted over 200 developers and fostered an effective collaboration model.",{"type":23,"tag":37,"props":14611,"children":14612},{},[14613],{"type":23,"tag":129,"props":14614,"children":14616},{"alt":4236,"src":14615},"\u002Fcategory\u002Fnews\u002F20250724\u002Fimg05.webp",[],{"type":23,"tag":37,"props":14618,"children":14619},{},[14620],{"type":29,"value":14621},"During the open discussion session, the openUBMC Development and Growth Committee conducted in-depth discussions on several key topics, including upstream and downstream collaboration for version releases, southbound component driver standards, joint ecosystem expansion and influence building, and community governance and operations. The session yielded broad consensus across multiple fronts.",{"type":23,"tag":37,"props":14623,"children":14624},{},[14625],{"type":23,"tag":129,"props":14626,"children":14628},{"alt":4236,"src":14627},"\u002Fcategory\u002Fnews\u002F20250724\u002Fimg04.webp",[],{"type":23,"tag":37,"props":14630,"children":14631},{},[14632],{"type":29,"value":14633},"Finally, Mr. Wang Ruifeng, Secretary-General of the openUBMC community, concluded the meeting by emphasizing that its successful convening represented a significant milestone in the community's evolution. It laid a strong foundation for openUBMC's long-term, sustainable growth. Moving forward, the community will take this meeting as a new starting point—upholding the principles of co-construction, sharing, and co-governance, and working collectively to drive sustained development of the openUBMC ecosystem.",{"type":23,"tag":4530,"props":14635,"children":14637},{"id":14636},"join-the-openubmc-community",[14638],{"type":29,"value":14639},"Join the openUBMC community:",{"type":23,"tag":37,"props":14641,"children":14642},{},[14643,14645,14650,14653,14655,14661,14664,14666],{"type":29,"value":14644},"Community website: ",{"type":23,"tag":43,"props":14646,"children":14648},{"href":14453,"rel":14647},[47],[14649],{"type":29,"value":14453},{"type":23,"tag":5984,"props":14651,"children":14652},{},[],{"type":29,"value":14654},"\nCode repository: ",{"type":23,"tag":43,"props":14656,"children":14659},{"href":14657,"rel":14658},"https:\u002F\u002Fgitcode.com\u002FopenUBMC",[47],[14660],{"type":29,"value":14657},{"type":23,"tag":5984,"props":14662,"children":14663},{},[],{"type":29,"value":14665},"\nCorporate cooperation: ",{"type":23,"tag":43,"props":14667,"children":14669},{"href":14668},"mailto:contact@openubmc.cn",[14670],{"type":29,"value":14671},"contact@openubmc.cn",{"title":9,"searchDepth":392,"depth":392,"links":14673},[14674],{"id":14636,"depth":379,"text":14639},"content:en:news:20250724.md","en\u002Fnews\u002F20250724.md","en\u002Fnews\u002F20250724","openUBMC Open Source Development Committee Launches Trial Operation with Inaugural Meeting The openUBMC Open Source Development Committee officially launched its trial operation in Shenzhen, China, on July 18, 2025, marked by its inaugural onsite meeting. This milestone event convened leaders and technical experts from over 30 companies, representing diverse fields including Internet, carriers, server vendors, independent BIOS vendors, component suppliers, and standards organizations.  The meeting focused on core topics such as technological innovation, ecosystem co-construction, and community governance, establishing clear goals and strategic directions for openUBMC's next phase of development.  Mr. Ma Yinchuan, Chairperson of the openUBMC Open Source Development Committee, attended the meeting and delivered a speech. He summarized the progress since openUBMC's initial open-sourcing, expressed gratitude for the contributions of all member organizations, and invited the committee to offer suggestions and ideas for the community's future work, emphasizing the need to build consensus and jointly advance the community's development.  Following this, Mr. Song Tongling, Chairperson of the openUBMC Technical Committee, addressed the openUBMC Open Source Development Committee on the major technical features of the newly released version 25.06 and the technical roadmap for the second half of the year 2025. Major upgrades in version 25.06  \nAs the second release of openUBMC in 2025, openUBMC 25.06 achieves significant progress. Key improvements include enhanced standardized interfaces, broader hardware compatibility, stronger O&M capabilities, and an optimized developer experience. Technical roadmap for H2 2025  \nIn the second half of 2025, the openUBMC community will focus on optimizing and upgrading core areas: BMC O&M features, developer usability, and community infrastructure. The aim is to create a more user-friendly and efficient BMC software and community ecosystem. Meanwhile, the openUBMC Technical Committee will uphold its commitment to technical work across H2, ensuring a strong foundation for the continuous development of community versions and technologies. A sustained, prosperous ecosystem is critical for the growth of any open source community. The openUBMC Ecosystem Development Team provided the openUBMC Open Source Development Committee with an update on the community's progress. Expanding industry ecosystem:  The openUBMC community has laid the foundation for a robust and comprehensive industry chain. Looking ahead, it will continue to broaden hardware and software support to accommodate a wider range of application scenarios. Enhanced standards and certification system:  The openUBMC Component Driver SIG will develop specifications for BMC southbound driver interfaces. Collaborating with community members and standards organizations, this SIG aims to establish unified component driver standards and a formal certification system. Impressive initial scale of commercial adoption:  Nearly 20 commercial versions based on the openUBMC community release have already been delivered by member organizations, spanning critical sectors such as cloud services, finance, and public utilities. Efficient and healthy organizational operations:：  The openUBMC community has formed nine technical SIGs focused on key areas including northbound interface management, southbound component integration, BMC O&M, and component drivers. These SIGs have attracted over 200 developers and fostered an effective collaboration model.  During the open discussion session, the openUBMC Development and Growth Committee conducted in-depth discussions on several key topics, including upstream and downstream collaboration for version releases, southbound component driver standards, joint ecosystem expansion and influence building, and community governance and operations. The session yielded broad consensus across multiple fronts.  Finally, Mr. Wang Ruifeng, Secretary-General of the openUBMC community, concluded the meeting by emphasizing that its successful convening represented a significant milestone in the community's evolution. It laid a strong foundation for openUBMC's long-term, sustainable growth. Moving forward, the community will take this meeting as a new starting point—upholding the principles of co-construction, sharing, and co-governance, and working collectively to drive sustained development of the openUBMC ecosystem. Join the openUBMC community: Community website:  https:\u002F\u002Fwww.openubmc.cn\u002Fen  \nCode repository:  https:\u002F\u002Fgitcode.com\u002FopenUBMC  \nCorporate cooperation:  contact@openubmc.cn",[],{"_path":14681,"_dir":14009,"_draft":8,"_partial":8,"_locale":9,"title":14682,"description":14683,"date":14684,"category":14009,"location":14013,"body":14685,"_type":4181,"_id":14912,"_source":4183,"_file":14913,"_stem":14914,"_extension":4186,"coverImage":14726,"plainText":14915,"authorNames":14916},"\u002Fen\u002Fnews\u002F2506-release","openUBMC 25.06 Released!","🥳 A huge thank-you to all the developers who contributed to the 25.06 release!","2025\u002F07\u002F07",{"type":20,"children":14686,"toc":14903},[14687,14692,14696,14701,14721,14728,14734,14738,14778,14783,14803,14809,14824,14828,14853,14859,14898],{"type":23,"tag":24,"props":14688,"children":14690},{"id":14689},"openubmc-2506-released",[14691],{"type":29,"value":14682},{"type":23,"tag":37,"props":14693,"children":14694},{},[14695],{"type":29,"value":14683},{"type":23,"tag":37,"props":14697,"children":14698},{},[14699],{"type":29,"value":14700},"The new version of openUBMC 25.06 is here on schedule—packed with major updates, new features, and community-driven improvements.",{"type":23,"tag":37,"props":14702,"children":14703},{},[14704,14706,14709,14711,14714,14716,14719],{"type":29,"value":14705},"✅ 1,272 issues resolved",{"type":23,"tag":5984,"props":14707,"children":14708},{},[],{"type":29,"value":14710},"\n✅ 1,582 PRs merged",{"type":23,"tag":5984,"props":14712,"children":14713},{},[],{"type":29,"value":14715},"\n✅ 334k lines of code added",{"type":23,"tag":5984,"props":14717,"children":14718},{},[],{"type":29,"value":14720},"\n✅ 179 contributors from multiple organizations",{"type":23,"tag":37,"props":14722,"children":14723},{},[14724],{"type":23,"tag":129,"props":14725,"children":14727},{"alt":4236,"src":14726},"\u002Fcategory\u002Fnews\u002F2506-release.png",[],{"type":23,"tag":4161,"props":14729,"children":14731},{"id":14730},"key-highlights-in-openubmc-2506",[14732],{"type":29,"value":14733},"🔑 Key Highlights in openUBMC 25.06",{"type":23,"tag":4530,"props":14735,"children":14736},{"id":14105},[14737],{"type":29,"value":14108},{"type":23,"tag":37,"props":14739,"children":14740},{},[14741,14743,14746,14748,14751,14753,14756,14758,14761,14763,14766,14768,14771,14773,14776],{"type":29,"value":14742},"🔥 Completed NCSI sideband management feature for NICs.",{"type":23,"tag":5984,"props":14744,"children":14745},{},[],{"type":29,"value":14747},"\n🔥 Enhanced NVME-MI protocol command set.",{"type":23,"tag":5984,"props":14749,"children":14750},{},[],{"type":29,"value":14752},"\n🔥 Improved smart data retrieval for drives.",{"type":23,"tag":5984,"props":14754,"children":14755},{},[],{"type":29,"value":14757},"\n🔥 Added support for parallel protocol library loading for RAID management.",{"type":23,"tag":5984,"props":14759,"children":14760},{},[],{"type":29,"value":14762},"\n🔥 Enabled manual\u002Fautomatic fan mode switching with persistent configuration.",{"type":23,"tag":5984,"props":14764,"children":14765},{},[],{"type":29,"value":14767},"\n🆕 Added power efficiency curve interface, enabling dynamic power mode switching.",{"type":23,"tag":5984,"props":14769,"children":14770},{},[],{"type":29,"value":14772},"\n🆕 Introduced parallel upgrade capability for multiple component types.",{"type":23,"tag":5984,"props":14774,"children":14775},{},[],{"type":29,"value":14777},"\n🆕 Expanded management support for devices including BF2\u002FBF3 NICs, and RAID cards 9540-8i, 9560-8i, 9440-8i, SP686C-M 16i 4G.",{"type":23,"tag":4530,"props":14779,"children":14780},{"id":14074},[14781],{"type":29,"value":14782},"🌐 Interface SIG",{"type":23,"tag":37,"props":14784,"children":14785},{},[14786,14788,14791,14793,14796,14798,14801],{"type":29,"value":14787},"🔥 Completed several Redfish 1.20 standard interfaces.",{"type":23,"tag":5984,"props":14789,"children":14790},{},[],{"type":29,"value":14792},"\n🆕 Introduced Observability, a new component for real-time BMC performance monitoring and faster issue debugging.",{"type":23,"tag":5984,"props":14794,"children":14795},{},[],{"type":29,"value":14797},"\n🆕 Added libirc, a remote communication library to simplify customized client development.",{"type":23,"tag":5984,"props":14799,"children":14800},{},[],{"type":29,"value":14802},"\n🐞 Fixed multiple WebUI bugs and enhanced KVM capabilities.",{"type":23,"tag":4530,"props":14804,"children":14806},{"id":14805},"️-bmc_core-sig",[14807],{"type":29,"value":14808},"⚙️ bmc_core SIG",{"type":23,"tag":37,"props":14810,"children":14811},{},[14812,14814,14817,14819,14822],{"type":29,"value":14813},"🔥 Implemented some missing parts of the \"Sensor\" section in IPMI Specifications.",{"type":23,"tag":5984,"props":14815,"children":14816},{},[],{"type":29,"value":14818},"\n🔥 Strengthened e-label and power-on\u002Fpower-off strategy customization.",{"type":23,"tag":5984,"props":14820,"children":14821},{},[],{"type":29,"value":14823},"\n🐞 Fixed sensor component bugs and improved fault localization.",{"type":23,"tag":4530,"props":14825,"children":14826},{"id":14177},[14827],{"type":29,"value":14180},{"type":23,"tag":37,"props":14829,"children":14830},{},[14831,14833,14836,14838,14841,14843,14846,14848,14851],{"type":29,"value":14832},"🔥 Optimized BMC Studio hardware adaptation UI for a more intuitive configuration experience.",{"type":23,"tag":5984,"props":14834,"children":14835},{},[],{"type":29,"value":14837},"\n🔥 Enhanced CSR check functionality in BMC Studio.",{"type":23,"tag":5984,"props":14839,"children":14840},{},[],{"type":29,"value":14842},"\n🆕 QEMU now supports Tianchi component simulation.",{"type":23,"tag":5984,"props":14844,"children":14845},{},[],{"type":29,"value":14847},"\n🐞 Fixed several build issues in bingo, with support for installation via apt and pip.",{"type":23,"tag":5984,"props":14849,"children":14850},{},[],{"type":29,"value":14852},"\n🆕 Added CMS signing capability for HPM packages in bingo.",{"type":23,"tag":4530,"props":14854,"children":14856},{"id":14855},"get-openubmc-2506",[14857],{"type":29,"value":14858},"📦 Get openUBMC 25.06",{"type":23,"tag":37,"props":14860,"children":14861},{},[14862,14863,14868,14871,14873,14878,14881,14883,14888,14891,14893],{"type":29,"value":14251},{"type":23,"tag":43,"props":14864,"children":14866},{"href":14254,"rel":14865},[47],[14867],{"type":29,"value":14254},{"type":23,"tag":5984,"props":14869,"children":14870},{},[],{"type":29,"value":14872},"\nRelease notes: ",{"type":23,"tag":43,"props":14874,"children":14876},{"href":14265,"rel":14875},[47],[14877],{"type":29,"value":14265},{"type":23,"tag":5984,"props":14879,"children":14880},{},[],{"type":29,"value":14882},"\nApplication store: ",{"type":23,"tag":43,"props":14884,"children":14886},{"href":14276,"rel":14885},[47],[14887],{"type":29,"value":14276},{"type":23,"tag":5984,"props":14889,"children":14890},{},[],{"type":29,"value":14892},"\nDocumentation: ",{"type":23,"tag":43,"props":14894,"children":14896},{"href":14287,"rel":14895},[47],[14897],{"type":29,"value":14287},{"type":23,"tag":37,"props":14899,"children":14900},{},[14901],{"type":29,"value":14902},"🙌 Thanks to every contributor for making openUBMC better with each release. Your passion and collaboration drive the community forward. Stay tuned—and join us to keep building a more open, intelligent, and powerful ecosystem together!",{"title":9,"searchDepth":392,"depth":392,"links":14904},[14905],{"id":14730,"depth":364,"text":14733,"children":14906},[14907,14908,14909,14910,14911],{"id":14105,"depth":379,"text":14108},{"id":14074,"depth":379,"text":14782},{"id":14805,"depth":379,"text":14808},{"id":14177,"depth":379,"text":14180},{"id":14855,"depth":379,"text":14858},"content:en:news:2506-release.md","en\u002Fnews\u002F2506-release.md","en\u002Fnews\u002F2506-release","openUBMC 25.06 Released! 🥳 A huge thank-you to all the developers who contributed to the 25.06 release! The new version of openUBMC 25.06 is here on schedule—packed with major updates, new features, and community-driven improvements. ✅ 1,272 issues resolved  \n✅ 1,582 PRs merged  \n✅ 334k lines of code added  \n✅ 179 contributors from multiple organizations  🔑 Key Highlights in openUBMC 25.06 Hardware SIG 🔥 Completed NCSI sideband management feature for NICs.  \n🔥 Enhanced NVME-MI protocol command set.  \n🔥 Improved smart data retrieval for drives.  \n🔥 Added support for parallel protocol library loading for RAID management.  \n🔥 Enabled manual\u002Fautomatic fan mode switching with persistent configuration.  \n🆕 Added power efficiency curve interface, enabling dynamic power mode switching.  \n🆕 Introduced parallel upgrade capability for multiple component types.  \n🆕 Expanded management support for devices including BF2\u002FBF3 NICs, and RAID cards 9540-8i, 9560-8i, 9440-8i, SP686C-M 16i 4G. 🌐 Interface SIG 🔥 Completed several Redfish 1.20 standard interfaces.  \n🆕 Introduced Observability, a new component for real-time BMC performance monitoring and faster issue debugging.  \n🆕 Added libirc, a remote communication library to simplify customized client development.  \n🐞 Fixed multiple WebUI bugs and enhanced KVM capabilities. ⚙️ bmc_core SIG 🔥 Implemented some missing parts of the \"Sensor\" section in IPMI Specifications.  \n🔥 Strengthened e-label and power-on\u002Fpower-off strategy customization.  \n🐞 Fixed sensor component bugs and improved fault localization. CICD SIG 🔥 Optimized BMC Studio hardware adaptation UI for a more intuitive configuration experience.  \n🔥 Enhanced CSR check functionality in BMC Studio.  \n🆕 QEMU now supports Tianchi component simulation.  \n🐞 Fixed several build issues in bingo, with support for installation via apt and pip.  \n🆕 Added CMS signing capability for HPM packages in bingo. 📦 Get openUBMC 25.06 Download:  https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fdownload  \nRelease notes:  https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fversion\u002Flatest  \nApplication store:  https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fmarketplace  \nDocumentation:  https:\u002F\u002Fwww.openubmc.cn\u002Fen\u002Fdocs 🙌 Thanks to every contributor for making openUBMC better with each release. Your passion and collaboration drive the community forward. Stay tuned—and join us to keep building a more open, intelligent, and powerful ecosystem together!",[],{"_path":14918,"_dir":14009,"_draft":8,"_partial":8,"_locale":9,"title":14919,"description":14920,"date":14921,"category":14318,"location":14013,"body":14922,"_type":4181,"_id":15161,"_source":4183,"_file":15162,"_stem":15163,"_extension":4186,"coverImage":14943,"plainText":15164,"authorNames":15165},"\u002Fen\u002Fnews\u002Fhangzhou-meetup-review","openUBMC Hangzhou Meetup 2025 Wrap-Up: Shaping the Future of Computing Power Management","On May 26, 2025, the openUBMC open source community held its first meetup in Hangzhou, Zhejiang. Over 60 maintainers and developers, representing key sectors like server, Internet, IBV, component, and chip, gathered to discuss openUBMC's technical evolution and share practical industry experiences.","2025\u002F05\u002F30",{"type":20,"children":14923,"toc":15147},[14924,14929,14933,14938,14945,14951,14956,14962,14967,14974,14980,14985,14992,14998,15003,15010,15016,15021,15028,15034,15039,15046,15052,15057,15064,15070,15075,15086,15092,15097,15104,15110,15115,15122,15128,15133,15140],{"type":23,"tag":24,"props":14925,"children":14927},{"id":14926},"openubmc-hangzhou-meetup-2025-wrap-up-shaping-the-future-of-computing-power-management",[14928],{"type":29,"value":14919},{"type":23,"tag":37,"props":14930,"children":14931},{},[14932],{"type":29,"value":14920},{"type":23,"tag":37,"props":14934,"children":14935},{},[14936],{"type":29,"value":14937},"The full-day meetup started with an opening session, followed by morning presentations on key topics and an immersive, hands-on workshop in the afternoon.",{"type":23,"tag":37,"props":14939,"children":14940},{},[14941],{"type":23,"tag":129,"props":14942,"children":14944},{"alt":4236,"src":14943},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview1.webp",[],{"type":23,"tag":4161,"props":14946,"children":14948},{"id":14947},"_1-opening-session",[14949],{"type":29,"value":14950},"1 Opening Session",{"type":23,"tag":37,"props":14952,"children":14953},{},[14954],{"type":29,"value":14955},"Zhang Yubo, representing the openUBMC Technical Committee, opened the meetup by introducing the agenda and sharing community updates, including new features in version 25.03, plans for version 25.06, community operational data, BMC Studio RC, and next steps for the community website.",{"type":23,"tag":4530,"props":14957,"children":14959},{"id":14958},"_2-presentations",[14960],{"type":29,"value":14961},"2 Presentations",{"type":23,"tag":37,"props":14963,"children":14964},{},[14965],{"type":29,"value":14966},"After the opening session, community developers from several companies presented their technical topics.",{"type":23,"tag":37,"props":14968,"children":14969},{},[14970],{"type":23,"tag":129,"props":14971,"children":14973},{"alt":4236,"src":14972},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview2.webp",[],{"type":23,"tag":4530,"props":14975,"children":14977},{"id":14976},"_21-developer-test-dt-best-practices-on-northbound-interfaces",[14978],{"type":29,"value":14979},"2.1 Developer Test (DT) Best Practices on Northbound Interfaces",{"type":23,"tag":37,"props":14981,"children":14982},{},[14983],{"type":29,"value":14984},"Huang Han from the Interface Special Interest Group (SIG) introduced a method for performing unit tests (UTs) on northbound mapping configurations, which significantly shortens development and debugging cycles while improving the community's ability to maintain code quality. He called on community developers to continue improving the UT capabilities for northbound interfaces and enhancing the stability of the openUBMC northbound interfaces.",{"type":23,"tag":37,"props":14986,"children":14987},{},[14988],{"type":23,"tag":129,"props":14989,"children":14991},{"alt":4236,"src":14990},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview3.webp",[],{"type":23,"tag":4530,"props":14993,"children":14995},{"id":14994},"_22-southbound-component-driver-standardization",[14996],{"type":29,"value":14997},"2.2 Southbound Component Driver Standardization",{"type":23,"tag":37,"props":14999,"children":15000},{},[15001],{"type":29,"value":15002},"Liu Xingsen from the Hardware SIG shared how standardized component compatibility approaches can address hardware adaptation challenges. He also explained how the open architecture allows vendors to independently develop BMC component drivers within the community. Finally, he invited more community members to join the discussion on standardization.",{"type":23,"tag":37,"props":15004,"children":15005},{},[15006],{"type":23,"tag":129,"props":15007,"children":15009},{"alt":4236,"src":15008},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview4.webp",[],{"type":23,"tag":4530,"props":15011,"children":15013},{"id":15012},"_23-pipeline-build-practices",[15014],{"type":29,"value":15015},"2.3 Pipeline Build Practices",{"type":23,"tag":37,"props":15017,"children":15018},{},[15019],{"type":29,"value":15020},"Yi Zhonghui from Wuhan Yangtze Computing Technology explained how they constructed their own build pipeline system using the Conan repository of the openUBMC community. He discussed the technical challenges encountered and offered practical solutions based on real-world examples, providing valuable references for developers.",{"type":23,"tag":37,"props":15022,"children":15023},{},[15024],{"type":23,"tag":129,"props":15025,"children":15027},{"alt":4236,"src":15026},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview5.webp",[],{"type":23,"tag":4530,"props":15029,"children":15031},{"id":15030},"_24-inic-adaptation-experience-sharing",[15032],{"type":29,"value":15033},"2.4 iNIC Adaptation Experience Sharing",{"type":23,"tag":37,"props":15035,"children":15036},{},[15037],{"type":29,"value":15038},"Bao Minmin from Henan Kunlun Technology shared practical experiences from their openUBMC intelligent NIC (iNIC) project, detailing the technical challenges faced during delivery and the lessons learned in overcoming them.",{"type":23,"tag":37,"props":15040,"children":15041},{},[15042],{"type":23,"tag":129,"props":15043,"children":15045},{"alt":4236,"src":15044},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview6.webp",[],{"type":23,"tag":4530,"props":15047,"children":15049},{"id":15048},"_25-development-challenges-and-lessons-learned",[15050],{"type":29,"value":15051},"2.5 Development Challenges and Lessons Learned",{"type":23,"tag":37,"props":15053,"children":15054},{},[15055],{"type":29,"value":15056},"Xiong Zirui from Henan Kunlun Technology, a developer new to the BMC domain, shared his experience in overcoming the hurdles he encountered when getting started with openUBMC to facilitate a smoother start for other developers.",{"type":23,"tag":37,"props":15058,"children":15059},{},[15060],{"type":23,"tag":129,"props":15061,"children":15063},{"alt":4236,"src":15062},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview7.webp",[],{"type":23,"tag":4530,"props":15065,"children":15067},{"id":15066},"_26-in-house-components-for-smart-serial-port-screens",[15068],{"type":29,"value":15069},"2.6 In-House Components for Smart Serial Port Screens",{"type":23,"tag":37,"props":15071,"children":15072},{},[15073],{"type":29,"value":15074},"Qiu Hao from Powerleader Computer System explained how the company used its in-house components to make innovative breakthroughs in serial port screen functionality on the openUBMC platform, covering technical details and implementation approaches. Another speaker, Zhu Junjie, discussed the full-process management of these new components, offering developers a practical, step-by-step guide.",{"type":23,"tag":37,"props":15076,"children":15077},{},[15078,15082],{"type":23,"tag":129,"props":15079,"children":15081},{"alt":4236,"src":15080},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview8.webp",[],{"type":23,"tag":129,"props":15083,"children":15085},{"alt":4236,"src":15084},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview9.webp",[],{"type":23,"tag":4530,"props":15087,"children":15089},{"id":15088},"_27-practical-experience-in-northbound-interface-adaptation",[15090],{"type":29,"value":15091},"2.7 Practical Experience in Northbound Interface Adaptation",{"type":23,"tag":37,"props":15093,"children":15094},{},[15095],{"type":29,"value":15096},"Zhang Qiang from Sichuan Huakun Zhenyu Intelligent Technology detailed how they adopted a northbound mapping mechanism to reduce interface adaptation workload from 1.5 person-months to just 3 person-days. This innovative approach significantly boosted efficiency and saved resources, sparking keen interest and discussions among attendees.",{"type":23,"tag":37,"props":15098,"children":15099},{},[15100],{"type":23,"tag":129,"props":15101,"children":15103},{"alt":4236,"src":15102},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview10.webp",[],{"type":23,"tag":4161,"props":15105,"children":15107},{"id":15106},"_3-hands-on-workshop",[15108],{"type":29,"value":15109},"3 Hands-on Workshop",{"type":23,"tag":37,"props":15111,"children":15112},{},[15113],{"type":29,"value":15114},"Organized by the Technical Committee, the hands-on workshop offered developers an opportunity to engage with core technologies and hot topics through immersive activities like coding, collaborative problem-solving, and open discussions. By writing and debugging code for key modules and validating solutions, participants gained firsthand experience in creative, collaborative open source work. Positive feedback highlighted effective knowledge exchange and expert support, demonstrating how the workshop successfully deepened technical skills and fostered community co-construction.",{"type":23,"tag":37,"props":15116,"children":15117},{},[15118],{"type":23,"tag":129,"props":15119,"children":15121},{"alt":4236,"src":15120},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview11.webp",[],{"type":23,"tag":4161,"props":15123,"children":15125},{"id":15124},"_4-looking-ahead",[15126],{"type":29,"value":15127},"4 Looking Ahead",{"type":23,"tag":37,"props":15129,"children":15130},{},[15131],{"type":29,"value":15132},"Through experience sharing and technical insights, the meetup showcased the openUBMC community developers' expertise and passion, providing an open, tech-driven platform for BMC developers. The openUBMC community intends to host more offline technical events and welcomes more developers to join.",{"type":23,"tag":37,"props":15134,"children":15135},{},[15136],{"type":23,"tag":129,"props":15137,"children":15139},{"alt":4236,"src":15138},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview12.webp",[],{"type":23,"tag":37,"props":15141,"children":15142},{},[15143],{"type":23,"tag":129,"props":15144,"children":15146},{"alt":4236,"src":15145},"\u002Fcategory\u002Fnews\u002Fhangzhou-meetup-review\u002Freview13.webp",[],{"title":9,"searchDepth":392,"depth":392,"links":15148},[15149,15159,15160],{"id":14947,"depth":364,"text":14950,"children":15150},[15151,15152,15153,15154,15155,15156,15157,15158],{"id":14958,"depth":379,"text":14961},{"id":14976,"depth":379,"text":14979},{"id":14994,"depth":379,"text":14997},{"id":15012,"depth":379,"text":15015},{"id":15030,"depth":379,"text":15033},{"id":15048,"depth":379,"text":15051},{"id":15066,"depth":379,"text":15069},{"id":15088,"depth":379,"text":15091},{"id":15106,"depth":364,"text":15109},{"id":15124,"depth":364,"text":15127},"content:en:news:hangzhou-meetup-review.md","en\u002Fnews\u002Fhangzhou-meetup-review.md","en\u002Fnews\u002Fhangzhou-meetup-review","openUBMC Hangzhou Meetup 2025 Wrap-Up: Shaping the Future of Computing Power Management On May 26, 2025, the openUBMC open source community held its first meetup in Hangzhou, Zhejiang. Over 60 maintainers and developers, representing key sectors like server, Internet, IBV, component, and chip, gathered to discuss openUBMC's technical evolution and share practical industry experiences. The full-day meetup started with an opening session, followed by morning presentations on key topics and an immersive, hands-on workshop in the afternoon.  1 Opening Session Zhang Yubo, representing the openUBMC Technical Committee, opened the meetup by introducing the agenda and sharing community updates, including new features in version 25.03, plans for version 25.06, community operational data, BMC Studio RC, and next steps for the community website. 2 Presentations After the opening session, community developers from several companies presented their technical topics.  2.1 Developer Test (DT) Best Practices on Northbound Interfaces Huang Han from the Interface Special Interest Group (SIG) introduced a method for performing unit tests (UTs) on northbound mapping configurations, which significantly shortens development and debugging cycles while improving the community's ability to maintain code quality. He called on community developers to continue improving the UT capabilities for northbound interfaces and enhancing the stability of the openUBMC northbound interfaces.  2.2 Southbound Component Driver Standardization Liu Xingsen from the Hardware SIG shared how standardized component compatibility approaches can address hardware adaptation challenges. He also explained how the open architecture allows vendors to independently develop BMC component drivers within the community. Finally, he invited more community members to join the discussion on standardization.  2.3 Pipeline Build Practices Yi Zhonghui from Wuhan Yangtze Computing Technology explained how they constructed their own build pipeline system using the Conan repository of the openUBMC community. He discussed the technical challenges encountered and offered practical solutions based on real-world examples, providing valuable references for developers.  2.4 iNIC Adaptation Experience Sharing Bao Minmin from Henan Kunlun Technology shared practical experiences from their openUBMC intelligent NIC (iNIC) project, detailing the technical challenges faced during delivery and the lessons learned in overcoming them.  2.5 Development Challenges and Lessons Learned Xiong Zirui from Henan Kunlun Technology, a developer new to the BMC domain, shared his experience in overcoming the hurdles he encountered when getting started with openUBMC to facilitate a smoother start for other developers.  2.6 In-House Components for Smart Serial Port Screens Qiu Hao from Powerleader Computer System explained how the company used its in-house components to make innovative breakthroughs in serial port screen functionality on the openUBMC platform, covering technical details and implementation approaches. Another speaker, Zhu Junjie, discussed the full-process management of these new components, offering developers a practical, step-by-step guide.   2.7 Practical Experience in Northbound Interface Adaptation Zhang Qiang from Sichuan Huakun Zhenyu Intelligent Technology detailed how they adopted a northbound mapping mechanism to reduce interface adaptation workload from 1.5 person-months to just 3 person-days. This innovative approach significantly boosted efficiency and saved resources, sparking keen interest and discussions among attendees.  3 Hands-on Workshop Organized by the Technical Committee, the hands-on workshop offered developers an opportunity to engage with core technologies and hot topics through immersive activities like coding, collaborative problem-solving, and open discussions. By writing and debugging code for key modules and validating solutions, participants gained firsthand experience in creative, collaborative open source work. Positive feedback highlighted effective knowledge exchange and expert support, demonstrating how the workshop successfully deepened technical skills and fostered community co-construction.  4 Looking Ahead Through experience sharing and technical insights, the meetup showcased the openUBMC community developers' expertise and passion, providing an open, tech-driven platform for BMC developers. The openUBMC community intends to host more offline technical events and welcomes more developers to join.  ",[],{"_path":15167,"_dir":14009,"_draft":8,"_partial":8,"_locale":9,"title":15168,"description":15169,"date":15170,"category":14318,"location":14013,"body":15171,"_type":4181,"_id":15381,"_source":4183,"_file":15382,"_stem":15383,"_extension":4186,"coverImage":15187,"plainText":15384,"authorNames":15385},"\u002Fen\u002Fnews\u002Fkadc-2025","openUBMC Technical Session: Building an Intelligent Foundation for Computing Power Management","On May 24, 2025, the Kunpeng & Ascend Developer Conference (KADC) was held at the Beijing ZhongGuanCun International Innovation Center. As one of the key sessions, the openUBMC technical session, titled \"Building an Intelligent Foundation for Computing Power Management,\" brought together developers and industry experts from cloud vendors, OEMs, component manufacturers, standards organizations, and academia to explore the future of open source device management software.","2025\u002F05\u002F27",{"type":20,"children":15172,"toc":15367},[15173,15178,15182,15189,15195,15200,15205,15212,15218,15223,15229,15234,15239,15246,15252,15257,15264,15270,15275,15282,15288,15293,15300,15306,15311,15318,15324,15329,15336,15339,15344,15350,15355,15360],{"type":23,"tag":24,"props":15174,"children":15176},{"id":15175},"openubmc-technical-session-building-an-intelligent-foundation-for-computing-power-management",[15177],{"type":29,"value":15168},{"type":23,"tag":37,"props":15179,"children":15180},{},[15181],{"type":29,"value":15169},{"type":23,"tag":37,"props":15183,"children":15184},{},[15185],{"type":23,"tag":129,"props":15186,"children":15188},{"alt":4236,"src":15187},"\u002Fcategory\u002Fnews\u002Fkadc-2025\u002Fkadc-1.webp",[],{"type":23,"tag":4161,"props":15190,"children":15192},{"id":15191},"_11-opening-remarks-open-source-collaboration-on-shaping-the-future",[15193],{"type":29,"value":15194},"1.1 Opening Remarks: Open Source Collaboration on Shaping the Future",{"type":23,"tag":37,"props":15196,"children":15197},{},[15198],{"type":29,"value":15199},"Ren Chao, Director of Huawei's Cloud BU Hardware Department, delivered the opening remarks. He reviewed Huawei's deep-rooted expertise in the baseboard management controller (BMC) domain since the company began server R&D in 2003, emphasizing that Huawei's BMC solutions are built on robust security to enable intelligent management of computing devices worldwide. He noted, \"The computing industry is ecosystem-driven. As a critical component, BMC offers us a path to open source development where we can consolidate collective expertise and build a computing power management ecosystem.\"",{"type":23,"tag":37,"props":15201,"children":15202},{},[15203],{"type":29,"value":15204},"As the initiator of the openUBMC community, Huawei has contributed its open source expertise accumulated over the past two decades and continues to invest in community governance, technological innovation, and ecosystem development. Mr. Ren called on global developers to jointly build the openUBMC community into a world-leading digital infrastructure management platform—one that is open, collaborative, and transparent through co-construction, sharing, and co-governance.",{"type":23,"tag":37,"props":15206,"children":15207},{},[15208],{"type":23,"tag":129,"props":15209,"children":15211},{"alt":4236,"src":15210},"\u002Fcategory\u002Fnews\u002Fkadc-2025\u002Fkadc-2.webp",[],{"type":23,"tag":4161,"props":15213,"children":15215},{"id":15214},"_12-themed-speeches-open-source-in-action-ecosystem-in-growth",[15216],{"type":29,"value":15217},"1.2 Themed Speeches: Open Source in Action, Ecosystem in Growth",{"type":23,"tag":37,"props":15219,"children":15220},{},[15221],{"type":29,"value":15222},"During the session, six targeted talks highlighted openUBMC's technical innovations and industry applications.",{"type":23,"tag":4530,"props":15224,"children":15226},{"id":15225},"_121-co-building-the-openubmc-community-and-the-intelligent-computing-management-foundation",[15227],{"type":29,"value":15228},"1.2.1 Co-Building the openUBMC Community and the Intelligent Computing Management Foundation",{"type":23,"tag":37,"props":15230,"children":15231},{},[15232],{"type":29,"value":15233},"Wang Ruifeng, General Secretary of the openUBMC Community, analyzed the challenges and opportunities of managing diverse computing power in the AI era. He outlined the community's vision to deliver open source and standardized digital infrastructure management software through collaboration with global developers, and to drive continuous innovations across platforms, domains, and the industry chain.",{"type":23,"tag":37,"props":15235,"children":15236},{},[15237],{"type":29,"value":15238},"Mr. Wang also introduced the architecture, toolchain features, and innovative development roadmap of the community, and officially announced the release of openUBMC 25.03. At the end of his speech, he encouraged all developers to collaborate in future iterations and innovations.",{"type":23,"tag":37,"props":15240,"children":15241},{},[15242],{"type":23,"tag":129,"props":15243,"children":15245},{"alt":4236,"src":15244},"\u002Fcategory\u002Fnews\u002Fkadc-2025\u002Fkadc-3.webp",[],{"type":23,"tag":4530,"props":15247,"children":15249},{"id":15248},"_122-redefining-management-software-platforms-with-a-new-open-architecture",[15250],{"type":29,"value":15251},"1.2.2 Redefining Management Software Platforms with a New Open Architecture",{"type":23,"tag":37,"props":15253,"children":15254},{},[15255],{"type":29,"value":15256},"Song Tongling, Member of the openUBMC Technical Committee, explained the evolving demands for device management across the computing industry and proposed a micro-component architecture to address challenges from single-server to cluster-level management. He emphasized standardized interfaces and a unified component framework to ensure the openness and compatibility of hardware and software management, and introduced a one-stop development platform that empowers developers to drive technical innovation in the community.",{"type":23,"tag":37,"props":15258,"children":15259},{},[15260],{"type":23,"tag":129,"props":15261,"children":15263},{"alt":4236,"src":15262},"\u002Fcategory\u002Fnews\u002Fkadc-2025\u002Fkadc-4.webp",[],{"type":23,"tag":4530,"props":15265,"children":15267},{"id":15266},"_123-test-building-and-automation-practices",[15268],{"type":29,"value":15269},"1.2.3 Test Building and Automation Practices",{"type":23,"tag":37,"props":15271,"children":15272},{},[15273],{"type":29,"value":15274},"Liu Song from Sichuan Huakun Zhenyu Intelligent Technology shared insights into openUBMC-based test building and automation practices, explaining how modular design dramatically improved integration efficiency, shortened release cycles, and ensured high-quality project delivery.",{"type":23,"tag":37,"props":15276,"children":15277},{},[15278],{"type":23,"tag":129,"props":15279,"children":15281},{"alt":4236,"src":15280},"\u002Fcategory\u002Fnews\u002Fkadc-2025\u002Fkadc-5.webp",[],{"type":23,"tag":4530,"props":15283,"children":15285},{"id":15284},"_124-end-to-end-delivery-practices",[15286],{"type":29,"value":15287},"1.2.4 End-to-End Delivery Practices",{"type":23,"tag":37,"props":15289,"children":15290},{},[15291],{"type":29,"value":15292},"Wang Qindong from Henan Kunlun Technology presented Kunlun's integrated openUBMC solution, demonstrating end-to-end commercial deployment on Kunpeng and Ascend servers. He also analyzed how community collaboration accelerates commercialization and effectively facilitates industry adoption.",{"type":23,"tag":37,"props":15294,"children":15295},{},[15296],{"type":23,"tag":129,"props":15297,"children":15299},{"alt":4236,"src":15298},"\u002Fcategory\u002Fnews\u002Fkadc-2025\u002Fkadc-6.webp",[],{"type":23,"tag":4530,"props":15301,"children":15303},{"id":15302},"_125-bmc-studio-toolchain-application-practices",[15304],{"type":29,"value":15305},"1.2.5 BMC Studio Toolchain Application Practices",{"type":23,"tag":37,"props":15307,"children":15308},{},[15309],{"type":29,"value":15310},"Wang Yazhou from Beijing KunlunTech demonstrated the powerful capabilities of the BMC Studio toolchain, particularly its efficiency in building development environments and customizing components. He recognized openUBMC in terms of usability and scalability, believing it will tangibly inspire and empower developers.",{"type":23,"tag":37,"props":15312,"children":15313},{},[15314],{"type":23,"tag":129,"props":15315,"children":15317},{"alt":4236,"src":15316},"\u002Fcategory\u002Fnews\u002Fkadc-2025\u002Fkadc-7.webp",[],{"type":23,"tag":4530,"props":15319,"children":15321},{"id":15320},"_126-build-and-management-practices-for-conan-components",[15322],{"type":29,"value":15323},"1.2.6 Build and Management Practices for Conan Components",{"type":23,"tag":37,"props":15325,"children":15326},{},[15327],{"type":29,"value":15328},"Wang Tao from Nanjing BYOSOFT presented in detail their practices for building Conan components, as well as expertise in related development scenarios. He highlighted that centralized dependency management within the community can significantly improve responsiveness to customer needs, providing strong support for both enterprise technology development and client services.",{"type":23,"tag":37,"props":15330,"children":15331},{},[15332],{"type":23,"tag":129,"props":15333,"children":15335},{"alt":4236,"src":15334},"\u002Fcategory\u002Fnews\u002Fkadc-2025\u002Fkadc-8.webp",[],{"type":23,"tag":4550,"props":15337,"children":15338},{"id":9},[],{"type":23,"tag":37,"props":15340,"children":15341},{},[15342],{"type":29,"value":15343},"This session, through technical presentations and case sharing from different enterprises, demonstrated the diverse value and impact of the openUBMC community in advancing intelligent computing power management foundations, providing the industry with more open and efficient open source device management software.",{"type":23,"tag":4161,"props":15345,"children":15347},{"id":15346},"_13-join-us",[15348],{"type":29,"value":15349},"1.3 Join us",{"type":23,"tag":37,"props":15351,"children":15352},{},[15353],{"type":29,"value":15354},"The openUBMC community will continue to bring together developers from around the world to jointly build a leading open source system for digital infrastructure management. We welcome developers to join us and collaborate in shaping the computing power management ecosystem.",{"type":23,"tag":37,"props":15356,"children":15357},{},[15358],{"type":29,"value":15359},"Scan the QR code for more community updates!",{"type":23,"tag":37,"props":15361,"children":15362},{},[15363],{"type":23,"tag":129,"props":15364,"children":15366},{"alt":4236,"src":15365},"\u002Fcategory\u002Fnews\u002Fkadc-2025\u002Fkadc-9.webp",[],{"title":9,"searchDepth":392,"depth":392,"links":15368},[15369,15370,15380],{"id":15191,"depth":364,"text":15194},{"id":15214,"depth":364,"text":15217,"children":15371},[15372,15373,15374,15375,15376,15377],{"id":15225,"depth":379,"text":15228},{"id":15248,"depth":379,"text":15251},{"id":15266,"depth":379,"text":15269},{"id":15284,"depth":379,"text":15287},{"id":15302,"depth":379,"text":15305},{"id":15320,"depth":379,"text":15323,"children":15378},[15379],{"id":9,"depth":392,"text":9},{"id":15346,"depth":364,"text":15349},"content:en:news:kadc-2025.md","en\u002Fnews\u002Fkadc-2025.md","en\u002Fnews\u002Fkadc-2025","openUBMC Technical Session: Building an Intelligent Foundation for Computing Power Management On May 24, 2025, the Kunpeng & Ascend Developer Conference (KADC) was held at the Beijing ZhongGuanCun International Innovation Center. As one of the key sessions, the openUBMC technical session, titled \"Building an Intelligent Foundation for Computing Power Management,\" brought together developers and industry experts from cloud vendors, OEMs, component manufacturers, standards organizations, and academia to explore the future of open source device management software.  1.1 Opening Remarks: Open Source Collaboration on Shaping the Future Ren Chao, Director of Huawei's Cloud BU Hardware Department, delivered the opening remarks. He reviewed Huawei's deep-rooted expertise in the baseboard management controller (BMC) domain since the company began server R&D in 2003, emphasizing that Huawei's BMC solutions are built on robust security to enable intelligent management of computing devices worldwide. He noted, \"The computing industry is ecosystem-driven. As a critical component, BMC offers us a path to open source development where we can consolidate collective expertise and build a computing power management ecosystem.\" As the initiator of the openUBMC community, Huawei has contributed its open source expertise accumulated over the past two decades and continues to invest in community governance, technological innovation, and ecosystem development. Mr. Ren called on global developers to jointly build the openUBMC community into a world-leading digital infrastructure management platform—one that is open, collaborative, and transparent through co-construction, sharing, and co-governance.  1.2 Themed Speeches: Open Source in Action, Ecosystem in Growth During the session, six targeted talks highlighted openUBMC's technical innovations and industry applications. 1.2.1 Co-Building the openUBMC Community and the Intelligent Computing Management Foundation Wang Ruifeng, General Secretary of the openUBMC Community, analyzed the challenges and opportunities of managing diverse computing power in the AI era. He outlined the community's vision to deliver open source and standardized digital infrastructure management software through collaboration with global developers, and to drive continuous innovations across platforms, domains, and the industry chain. Mr. Wang also introduced the architecture, toolchain features, and innovative development roadmap of the community, and officially announced the release of openUBMC 25.03. At the end of his speech, he encouraged all developers to collaborate in future iterations and innovations.  1.2.2 Redefining Management Software Platforms with a New Open Architecture Song Tongling, Member of the openUBMC Technical Committee, explained the evolving demands for device management across the computing industry and proposed a micro-component architecture to address challenges from single-server to cluster-level management. He emphasized standardized interfaces and a unified component framework to ensure the openness and compatibility of hardware and software management, and introduced a one-stop development platform that empowers developers to drive technical innovation in the community.  1.2.3 Test Building and Automation Practices Liu Song from Sichuan Huakun Zhenyu Intelligent Technology shared insights into openUBMC-based test building and automation practices, explaining how modular design dramatically improved integration efficiency, shortened release cycles, and ensured high-quality project delivery.  1.2.4 End-to-End Delivery Practices Wang Qindong from Henan Kunlun Technology presented Kunlun's integrated openUBMC solution, demonstrating end-to-end commercial deployment on Kunpeng and Ascend servers. He also analyzed how community collaboration accelerates commercialization and effectively facilitates industry adoption.  1.2.5 BMC Studio Toolchain Application Practices Wang Yazhou from Beijing KunlunTech demonstrated the powerful capabilities of the BMC Studio toolchain, particularly its efficiency in building development environments and customizing components. He recognized openUBMC in terms of usability and scalability, believing it will tangibly inspire and empower developers.  1.2.6 Build and Management Practices for Conan Components Wang Tao from Nanjing BYOSOFT presented in detail their practices for building Conan components, as well as expertise in related development scenarios. He highlighted that centralized dependency management within the community can significantly improve responsiveness to customer needs, providing strong support for both enterprise technology development and client services.   This session, through technical presentations and case sharing from different enterprises, demonstrated the diverse value and impact of the openUBMC community in advancing intelligent computing power management foundations, providing the industry with more open and efficient open source device management software. 1.3 Join us The openUBMC community will continue to bring together developers from around the world to jointly build a leading open source system for digital infrastructure management. We welcome developers to join us and collaborate in shaping the computing power management ecosystem. Scan the QR code for more community updates! ",[],1781778343393]